标签:soj soj1002 soj1002大数加法 c++
背景:wrong在几组坑数据上,如果不看discuss,打死我也想不出来还有那些坑数据,o(︶︿︶)o 唉。
思路:用数组存储那个数字,然后进行想加,相加的时候记住取余和取整运算,还得注意几组特别坑的数据,这里提供几组坑数据。
<1>0000 0000 <2>99 1 <3> 001245 1000
学习:了解用数组去存储一个大数。
#include <stdio.h> #include <string.h> 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; }
标签:soj soj1002 soj1002大数加法 c++
原文地址:http://blog.csdn.net/qiweigo/article/details/43577469