http://ac.jobdu.com/problem.php?cid=1040&pid=59
- 题目描述:
-
实现一个加法器,使其能够输出a+b的值。
- 输入:
-
输入包括两个数a和b,其中a和b的位数不超过1000位。
- 输出:
-
可能有多组测试数据,对于每组数据,
输出a+b的值。
- 样例输入:
-
2 6 10000000000000000000 10000000000000000000000000000000
- 样例输出:
-
8 10000000000010000000000000000000
// 题目60:a+b.cpp: 主项目文件。 #include "stdafx.h" #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<functional> #include<iostream> #include<vector> #include<queue> #include<stack> #include<map> #include<set> using namespace std; char a[1003],b[1003]; void Sum(char *a,char *b) { char c[1001],d[1001]; memset(c,'0',sizeof(c)); memset(d,'0',sizeof(d)); int l1=strlen(a),l2=strlen(b),t,i; t=l1>l2?l1:l2; for(i=0;i<l1;i++) c[i]=a[l1-1-i]; for(i=0;i<l2;i++) d[i]=b[l2-1-i]; for(i=0;i<t;i++) { c[i]+=d[i]-'0'; if(c[i]>9) c[i+1]+=(c[i]-'0')/10; c[i]=(c[i]-'0')%10+'0'; } if(c[t]!='0') t++; for(i=t-1;i>=0;i--) printf("%c",c[i]); printf("\n"); } int main() { /////////////////////////////////// //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); /////////////////////////////////// int n; while(scanf("%s%s",a,b)!=EOF) { Sum(a,b); } return 0; }