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:本题主要考察高精度加法,在学习《算法笔记》章节后,灵活运用到本题,就可以破解本题。注意输出格式,输出数据之间会有一个空行。
原文:https://www.cnblogs.com/mist2019/p/10347616.html