1091: 大大的求和
作者:互联网
题目描述
小明在做小红给他出的算术题加法题,但是小红为了治一治小明懒惰的毛病,给他出的数都很大,这下小明郁闷了,想请你帮忙。输入
输入的第一行是一个正整数N,表示一共有N组测试数据。每组数据由1~100行正整数组成,每行正整数的长度不大于100位。
当输入0时,表示此组数据输入完毕。
输出
对于每组输入数据,输出所有数字的总和。每两组输出数据之间有一个空行。样例输入
2 123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0 12 34 0
样例输出
370370367037037036703703703670 46
1 #include<iostream> 2 #include<cstdio> 3 #include<string.h> 4 using namespace std; 5 struct bign{ 6 int d[110]; 7 int len; 8 bign(){ 9 memset(d,0,sizeof(d)); 10 len=0; 11 } 12 }; 13 bign change(char c[]){ 14 bign b; 15 b.len=strlen(c); 16 for(int i=0;i<b.len;i++){ 17 b.d[i]=c[b.len-i-1]-'0'; 18 } 19 return b; 20 } 21 bign add(bign a,bign b){ 22 bign c; 23 int carry=0; 24 for(int i=0;i<a.len || i<b.len;i++){ 25 int temp=a.d[i]+b.d[i]+carry; 26 c.d[c.len++]=temp%10; 27 carry=temp/10; 28 } 29 if(carry!=0){ 30 c.d[c.len++]=carry; 31 } 32 return c; 33 } 34 int main(){ 35 int n; 36 scanf("%d",&n); 37 while(n--){ 38 bign t; 39 while(true){ 40 char str[110]; 41 scanf("%s",str); 42 if(str[0]=='0'){ 43 break; 44 } 45 t=add(t,change(str)); 46 } 47 for(int i=t.len-1;i>=0;i--){ 48 printf("%d",t.d[i]); 49 } 50 printf("\n"); 51 printf("\n"); 52 } 53 return 0; 54 }
Mist Note:本题主要考察高精度加法,在学习《算法笔记》章节后,灵活运用到本题,就可以破解本题。注意输出格式,输出数据之间会有一个空行。
标签:输出,1091,求和,len,大大的,bign,printf,include,输入 来源: https://www.cnblogs.com/mist2019/p/10347616.html