背景:wrong在幾組坑數據上,如果不看discuss,打死我也想不出來還有那些坑數據,o(︶︿︶)o 唉。
思路:用數組存儲那個數字,然後進行想加,相加的時候記住取余和取整運算,還得注意幾組特別坑的數據,這裡提供幾組坑數據。
<1>0000 0000 <2>99 1 <3> 001245 1000
學習:了解用數組去存儲一個大數。
#include#include void Sum(int a[],int i,int b[],int j) { int c[1000],k; int d=a[--i]+b[--j]; c[0]=d%10; for(k=1;j>0;k++) { i--;j--; c[k]=(a[i]+b[j]+d/10)%10; d=a[i]+b[j]+d/10; } for(;i>0;k++) { i--; c[k]=(a[i]+d/10)%10; d=a[i]+d/10; } int ok=0; if(d/10==1) {ok=1;printf("%d",d/10);} for(k-=1;k>=0;k--) { if(c[k]) ok=1; if(ok) printf("%d",c[k]); } if(!ok) printf("%d",0); printf("\n"); } int main(void) { char ch; while(scanf("%c",&ch)==1) { int a[1000],b[1000]; a[0]=ch-'0'; int i,j; for(i=1;(ch=getchar())!=' ';i++) a[i]=ch-'0'; for(j=0;(ch=getchar())!='\n';j++) b[j]=ch-'0'; if(i>=j) Sum(a,i,b,j); else Sum(b,j,a,i); } return 0; }