Codeup100000593问题 A: a+b

    技术2025-02-16  21

    题目描述:

    实现一个加法器,使其能够输出a+b的值。

    输入:

    输入包括两个数a和b,其中a和b的位数不超过1000位。

    输出:

    可能有多组测试数据,对于每组数据, 输出a+b的值。

    样例输入:

    6 8 2000000000 30000000000000000000

    样例输出:

    14 30000000002000000000

    实现代码:

    #include <cstdio> #include <cstdlib> #include <ctime> #include <cstring> #include <algorithm> #include <math.h> using namespace std; struct bign{ int d[1010]; int len; bign(){ memset(d,0,sizeof(d)); len=0; } }; bign change(char str[]){ bign a; a.len=strlen(str); for(int i=0;i<a.len;i++){ a.d[i]=str[a.len-1-i]-'0'; } return a; } bign add(bign a,bign b){ bign c; int carry=0; int temp; for(int i=0;i<a.len||i<b.len;i++){ temp=a.d[i]+b.d[i]+carry; c.d[c.len++]=temp%10; carry=temp/10; } if(carry!=0){ c.d[c.len++]=carry; } return c; } void print(bign a){ for(int i=a.len-1;i>=0;i--){ printf("%d",a.d[i]); } } int main(){ char str1[1010],str2[1010]; while(scanf("%s %s",str1,str2)!=EOF){ bign a=change(str1); bign b=change(str2); print(add(a,b)); printf("\n"); } return 0; }
    Processed: 0.010, SQL: 9