hdu002大数相加

//大数相加


#include <iostream>

#include <string.h>

using namespacestd;

int flag=0;

int main()

{

    int  t,i,j,k;

    cin>>t;

    char s[1005],s1[1005],s2[1005],s3[1005];

    while(t--)

    {

        flag++;

        memset(s,'0',sizeof(s1));

        memset(s1,'0',sizeof(s1));

        memset(s2,'0',sizeof(s2));

        memset(s3,'0',sizeof(s3));

        cin>>s;

        int l1=strlen(s);

        for(i=0;i<l1;i++)

            s1[i]=s[l1-i-1];

        memset(s,'0',sizeof(s));

        cin>>s;

        int l2=strlen(s);

        for(i=0;i<l2;i++)

            s2[i]=s[l2-i-1];

        if(flag!=1)

            cout<<endl;

        s3[0]=(s1[0]-'0'+s2[0]-'0')%10+'0';

        s3[1]=(s1[0]-'0'+s2[0]-'0')/10;

        //最后一位的计算必须单独计算

        

        i=1;j=1;k=1;

        while(i<l1||j<l2)

        {

            s3[k+1]=(s3[k]+s1[i]-'0'+s2[j]-'0')/10;

            //必须先进行进位的计算

            

            s3[k]=(s3[k]+s1[i]-'0'+s2[j]-'0')%10+'0';

            //必须将s3[k]放在括号中

            

            i++;j++;k++;

        }

        cout<<"Case "<<flag<<":"<<endl;

        for(i=l1-1;i>=0;i--)

            cout<<s1[i];

        cout<<" + ";

        for(i=l2-1;i>=0;i--)

            cout<<s2[i];

        cout<<" = ";

        i=k;

        s3[k]+='0';

        // 余数算出来的是数字,必须+‘0’才能转换成字符并输出

        

        

        if(k==1&&s3[0]=='0')

            cout<<0<<endl<<endl;

        else

        {

            while(s3[i]=='0')

                i--;

            for(;i>=0;i--)

            {

                cout<<s3[i];

            }

            cout<<endl;

        }

    }

    

    return0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值