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\n",sum[0]); 29 return 0; 30 }
时间: 2024-10-04 17:12:32