码迷,mamicode.com
首页 > 其他好文 > 详细

1091: 大大的求和

时间:2019-02-02 10:29:34      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:space   格式   灵活运用   cst   break   输出   小明   高精度   using   

题目描述

小明在做小红给他出的算术题加法题,但是小红为了治一治小明懒惰的毛病,给他出的数都很大,这下小明郁闷了,想请你帮忙。

输入

输入的第一行是一个正整数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: 大大的求和

标签:space   格式   灵活运用   cst   break   输出   小明   高精度   using   

原文地址:https://www.cnblogs.com/mist2019/p/10347616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!