标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15325 Accepted Submission(s): 3933
1 123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0
370370367037037036703703703670
大数多个数相加和一般的数多个数相加方法一样,都是用一个数来保存结果(数的和),将数如的数加到这个结果上直到不满足条件为止,输出结果!区别在于:大数需要用到数组,需要将大数的两个数的加法的算法用到这个上面,具体操作看代码!
#include <stdio.h>
#include <string.h>
#define N 105
char a[N];
int b[N],c[N];
int main()
{
int n,i,j,k,len;
scanf("%d",&n);
while(n--)
{
memset(c,0,sizeof(c));//数组c用来保存最终的结果(多个大数的和)
while(gets(a)&&a[0]!='0')
{
len=strlen(a);
memset(b,0,sizeof(b));//数组b用来保存数组a中的字符-‘0’所得到的数值!
for(i=len-1,j=0;i>=0;i--)
{
b[j++]=a[i]-'0';
}
for(i=0;i<101;i++)//每次都将b加到c上
{
c[i]+=b[i];
if(c[i]>=10)
{
c[i]-=10;
c[i+1]++;
}
}
}
for(i=100;i>=0&&c[i]==0;i--);//输出c!
if(i>=0)
for(;i>=0;i--)
printf("%d",c[i]);
else
printf("0");
printf("\n");
if(n!=0)//两个输出结果之间要空一行!
printf("\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/dxx_111/article/details/47068161