zoukankan      html  css  js  c++  java
  • HDU:Integer Inquiry

    #include"stdio.h"
    #include"stdlib.h"
    #include"string.h"
    #define N 105
    int a[N];
    int main()
    {
        int i,j,n,n1,flag;
        char ch[N];
        scanf("%d",&n);
        while(n--)
        {        
            memset(a,0,sizeof(a));      //数组初始化为零
            while(scanf("%s",ch),ch[0]!='0')     //输入零结束
            {
                n1=strlen(ch);
                for(i=n1-1,j=0;i>=0;i--)
                {
                    a[j++]+=ch[i]-'0';         
                    a[j]+=a[j-1]/10;         //进位
                    a[j-1]%=10;              //取余
                }
            }
            flag=0;
            for(i=N-1;i>0;i--)
            {
                if(flag)
                    printf("%d",a[i]);
                else if(a[i])
                {
                    printf("%d",a[i]);
                    flag=1;
                }
            }
            printf("%d
    ",a[0]);         //输入0时应输出0,错了n多次
            if(n)                    //输出块之间有空行
                printf("
    ");
        }
        return 0;
    }

     改版 为什么一直WA

    #include"stdio.h"
    #include"stdlib.h"
    #include"string.h"
    #define N 105
    int a[N],b[N];
    int main()
    {
        int i,j,n,n1,flag;
        char ch[N];
        scanf("%d",&n);
        while(n--)
        {        
            memset(a,0,sizeof(a));      //数组初始化为零
            while(scanf("%s",ch),ch[0]!='0')     //输入零结束
            {
                n1=strlen(ch);
                memset(b,0,sizeof(b));  
                for(i=0,j=n1-1;j>=0;j--,i++)
                      b[i]=ch[j]-'0';
                int h=0;
                int m;
                for(i=0;i<n1;i++)
                {
                    m=a[i]+b[i]+h;
                    a[i]=m%10;
                    h=m/10; 
                }
                while(h)
                {
                    a[i]=h%10;
                    n1++;
                    h=h/10; 
                }
            }
            flag=0;
            for(i=N-1;i>0;i--)
            {
                if(flag)
                    printf("%d",a[i]);
                else if(a[i])
                {
                    printf("%d",a[i]);
                    flag=1;
                }
            }
            printf("%d
    ",a[0]);         //输入0时应输出0,错了n多次
            if(n)                    //输出块之间有空行
                printf("
    ");
        }
        return 0;
    }
    View Code

     C++版本

    #include<iostream>
    #include<cstring>
    using namespace std;
    #define N 110
    int main()
    {	
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		int sum[N]={0};
    		
    		char str[N];
    		while(cin>>str&&str[0]!='0')
    	   {
    	   	  int num[N]={0};
    		  int len=strlen(str);
    		  for(int i=0;i<len;i++)
    		       num[i]=str[len-1-i]-'0';
    		  for(int i=0;i<N;i++)
    		  {
    		  	sum[i]+=num[i];
    		  	if(sum[i]>9)
    		  	{
    		  	   sum[i]-=10;
    			   sum[i+1]+=1;	
    			}
    			//sum[i+1]+=(sum[i]+num[i])/10;
    		    //sum[i]=(sum[i]+num[i])%10;
    		  }
    	    }
    	    int k=N-1;
    	    while(sum[k]==0) k--;
    	    if(k<0) 
    		  cout<<0;
    	    else 
    	      for(;k>=0;k--)
    	          cout<<sum[k];
    	    cout<<endl;
    		if(t)
    		   cout<<endl;	
    	}
    
    	return 0;
    }
    
    #include <iostream>
    #include <cstring>
    #include <string>
    #include <cmath>
    using namespace std;
    const int N=105;
    int main()
    {
        int a[N],b[N],c,d,ou,kl;
        string s1,s2;
        getline(cin,s1);
        c=s1.length();
        ou=0;
        for (int i=0;i<N;i++)//把s1h装到a[100]里
        {
            a[N-1-i]=s1[c-1-i]-'0';
            if(c-1-i<0)
            {
                a[N-1-i]=0;
            }
        }
        while(getline(cin,s2)&&s2!="0")
        {
            d=s2.length();
            for (int k=0;k<N;k++)//把s2装到b[100]里
            {
                b[N-1-k]=s2[d-1-k]-'0';
                if(d-1-k<0)
                {
                    b[N-1-k]=0;
                }
            }
            for (int l=N-1;l>0;l--)//做加法
            {
                a[l]+=b[l];
                if(a[l]>=10)
                {
                    a[l]-=10;
                    a[l-1]++;
                }
            }
        }
        for (int g=0;g<N;g++)//从不为零的位置开始输出到最后一位
        {
            ou+=a[g];
            if(ou!=0)
                cout<<a[g];
        }
        cout<<endl;
    
    
        return 0;
    }
  • 相关阅读:
    A2-02-15.DML-MySQL RIGHT JOIN
    A2-02-14.DML- MySQL LEFT JOIN
    A2-02-13.DML- MySQL INNER JOIN
    NHibernate N+1问题实例分析和优化
    怎么创建移动页面应用程序
    .NET开发时让人头痛的SESSION超时
    WCF服务编程——数据契约快速入门
    数据模型类对比,用反射做个快乐的程序员
    javascript常见数据集
    provider:命名管道提供程序,error:40
  • 原文地址:https://www.cnblogs.com/wft1990/p/5864025.html
Copyright © 2011-2022 走看看