其他分享
首页 > 其他分享> > 1091: 大大的求和

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