HDOJ1002大数相加

#include<cstdio>
#include<cstring>
int main(void){
    int cass;
    int cc = 0;
    char a[1005], b[1005];
    while(~scanf("%d", &cass)){
        int count = 1;
        while(cc++ < cass){
            scanf("%s%s", a, b);
            int lenofa = strlen(a);
            int lenofb = strlen(b);
            int last = (lenofa < lenofb ? lenofb:lenofa) - 1;
            int incre = 0;
            int i = lenofa-1;
            int j = lenofb-1;
            int k = 0;
            int c[1005];
            while(i >= 0&&j >= 0){
                c[last] = a[i]-'0' + b[j]-'0' + incre;
                incre = (c[last]>=10 ? 1: 0);
                c[last--] %= 10;
                i--;
                j--;
            }
            while(j >= 0){
                c[j] = b[j] - '0' + incre;
                incre = (c[j]>=10 ? 1: 0);
                c[j] %= 10;
                j--;
            }
            while(i >= 0){
                c[i] = a[i] - '0' + incre;
                incre = (c[i]>=10 ? 1: 0);
		c[i] %= 10;
                i--;
            }
            printf("Case %d:\n", count);
            for( i = 0; i < lenofa; i++) putchar(a[i]);
            putchar(' '); putchar('+'); putchar(' ');
            for( i = 0; i < lenofb; i++) putchar(b[i]);
            putchar(' '); putchar('='); putchar(' ');
            if(incre) putchar('1');
            for(; k < (lenofa < lenofb ? lenofb:lenofa); k++)
                printf("%d", c[k]);
            putchar('\n');
            if(count < cass) putchar('\n');
            count++;
            memset(a, NULL, sizeof(a));
            memset(b, NULL, sizeof(b));
        }
        cc = 0;
     }         
    return 0;         
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值