POJ 1503

http://poj.org/problem?id=1503

对于这个题我也是醉了,因为最开始是有学长和我们说过这个题目的,我以为我记得题目是什么意思,也就没看题目,结果按案例去理解题意,结果WA了一晚上,我也是醉醉哒。

最后今天才在discuss发现是我的理解题意错了,改下,就对了。给我一个很大的教训。。。。。

题意很简单,,就是一组大整数的加法而已,终止的标志就是只有一个0输入。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 char str[150]={0};
 5 int a[150]={0},sum[150]={0};
 6 
 7 int main()
 8 {
 9     while(scanf("%s",str)&&strcmp(str,"0")){
10         int len=strlen(str);
11         for(int i=0,j=len-1;i<len;i++,j--)    //我用一个a数组的目的就是反正前导0的出现。因为我的数据是从开始到末尾是倒过来的,所以前导0在之后的加法中也是在后面了,不起任何作用。
12             a[i]=str[j]-'0';
13         for(int i=0;i<=120;i++){
14             sum[i]+=a[i];
15             if(sum[i]>=10) {
16                 sum[i+1]++;
17                 sum[i]-=10;
18             }
19         }
20         memset(str,0,sizeof(str));      //初始化,反正之后的str数组较小,只替代了部分之前的str数组。
21     }
22     for(int i=149,j=150;i>0;i--){
23             if(sum[i]==0) {
24                 j--;
25             }
26         if(i!=j)printf("%d",sum[i]);
27     }
28     printf("%d
",sum[0]);
29     return 0;
30 }
原文地址:https://www.cnblogs.com/Tree-dream/p/5499261.html