HDU 1047 Integer Inquiry

解题报告:本题就是用数组模拟大数的相加,输入的第一行是一个n,表示有n组测试数据,输入有多个大数,输入以0结尾。用数组模拟加法就可以了,编写一个

add(char *)函数,没输入一次都将对应的位置的值加到和里面去,保存结果的数组应该定义一个int型的数组。而且数组的第一位应该保存呢结果的最高位,这样就可以方便地进行进位,只是记得在输出的时候要倒过来输就可以了。还有一个要注意的是,本题的格式比较坑,表示交了十多次都PE,因为看了disscuss里面一位同学错误的格式,晕,格式只要在输出结果的后面空一行就可以了,但测试数据的最后一组后面不要空行、

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 char str[10005];
 5 int sum[10005];
 6 void add(char *Str) {
 7     int len=strlen(Str);
 8     int z=1;
 9     for(int i=len-1;i>=0;--i) {
10         sum[z]+=(Str[i]-'0');
11         sum[z+1]+=sum[z]/10;
12         sum[z]%=10;
13         z++;
14     }
15 }
16 int main() {
17     int Case;
18     scanf("%d",&Case);
19     while(Case--) {
20         memset(sum,0,sizeof(sum));
21         int n=0;
22         while(scanf("%s",str)&&str[0]!='0')
23             add(str);
24         int biaoji=0;
25         for(int i=10000;i>1;--i)
26         if(biaoji==0&&sum[i]==0)
27         continue;
28         else {
29             biaoji=1;
30             printf("%d",sum[i]);
31         }
32         printf("%d\n",sum[1]);
33         if(Case!=0)
34         printf("\n");
35     }
36     return 0;
37 }
原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3051433.html