大数加法模板

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s[1005],p[1005];
int a[1005],b[1005],c[1005];
int main(){
    s[0]='#';p[0]='#';
    int T,cas=0;scanf("%d",&T);
    while(T--){
        scanf("%s%s",s+1,p+1);
        int i,lens=strlen(s)-1,lenp=strlen(p)-1;
        for(i=0;i<1005;++i) a[i]=0;
        for(i=0;i<1005;++i) b[i]=0;
        for(i=lens;i>=1;--i) a[i]=s[lens-i+1]-'0';
        for(i=lenp;i>=1;--i) b[i]=p[lenp-i+1]-'0';
        a[0]=lens;b[0]=lenp;c[0]=max(a[0],b[0]);
        for(i=1;i<=a[0]||i<=b[0];++i) c[i]=a[i]+b[i];    
        for(i=1;i<=c[0];++i)
            if(c[i]>=10){
                if(i+1>c[0]) c[0]++;c[i+1]+=c[i]/10;c[i]%=10;
            }
        while(c[c[0]]>=10) {
            c[c[0]+1]=c[c[0]]/10;
            c[c[0]++]%=10;
        }
        printf("Case %d:\n%s + %s = ",++cas,s+1,p+1);
        for(i=c[0];i>=1;--i) printf("%d",c[i]);printf("\n");
        if(T!=0) printf("\n");
    }
    return 0;
}

 

posted @ 2017-03-18 16:18  狡啮之仰  阅读(164)  评论(0编辑  收藏  举报