SDNU 1303.A+B(高精度) ......

来源:互联网 发布:淘宝的返利怎么领取 编辑:程序博客网 时间:2024/04/29 20:54

1303.A+B(高精度)

Description

求A+B


Input

多组测试样例。两个正整数X,Y(0≤X,Y≤10^100)


Output

输出结果


Sample Input

1 1
12345 54321

Sample Output

2
66666


    题目已经说的很清楚是高精度了.......

    下面代码

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char ads[105];char s1[105],s2[105];int additive(char* a,char* b){    memset(ads,0,sizeof(ads));    int len,len1,len2;    int i;    int ad[105];    len1=strlen(a);    len2=strlen(b);    if(len1==len2)    {        len=len1;    }    else if(len1>len2)    {        len=len1;        for(i=len;i>=len-len2;i--)        {            b[i]=b[i-len+len2];        }        for(i=len-len2-1;i>=0;i--)        {            b[i]='0';        }    }    else if(len1<len2)    {        len=len2;        for(i=len;i>=len-len1;i--)        {            a[i]=a[i-len+len1];        }        for(i=len-len1-1;i>=0;i--)        {            a[i]='0';        }    }    int t=0;    for(i=len-1;i>=0;i--)    {        ad[i]=(a[i]-'0')+(b[i]-'0')+t;        t=0;        if(ad[i]>=10)        {            t++;            ad[i]=ad[i]-10;            ads[i]=ad[i]+'0';        }        else        {            ads[i]=ad[i]+'0';        }    }    if(t==1)    {        for(i=len;i>=0;i--)        {            ads[i]=ads[i-1];        }        ads[0]='1';    }    return 0;}int main(){    while(scanf("%s",s1)!=EOF)    {        scanf("%s",s2);        additive(s1,s2);        cout<<ads<<endl;    }    return 0;}


0 0
原创粉丝点击