题目:
川哥可谓是我校ACM起家的鼻祖,虽然早已毕业却特别关注这次科技节的校赛,特意嘱咐,一定会A+B的大数加法!
输入
多行测试数据,每行包含两个正整数a和b,a和b的范围不会超过1000位
输出
输出a+b的结果
样例输入
1 1
1000 2000
样例输出
2
3000
ac代码:
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<vector>
#include<map>
#include<stdlib.h>
using namespace std;
typedef long long ll;
int main()
{
char s[10005],f[1005];
int s1[10005],f1[10005],ans[10005];
int k;
while(cin>>s>>f)
{
memset(s1,0,sizeof(s1));
memset(f1,0,sizeof(f1));
int l1=strlen(s),l2=strlen(f);
int l3=max(l1,l2);
///将字符串里数倒序存入数组中
k=0;
for(int i=l1-1; i>=0; i--)
s1[k++]=s[i]-'0';
k=0;
for(int j=l2-1; j>=0; j--)
f1[k++]=f[j]-'0';
///h用来标记进位
int h=0;
for(int i=0; i<=10005; i++)
{
if(s1[i]+f1[i]+h>9)
{
ans[i]=s1[i]+f1[i]+h-10;
h=1;
}
else
{
ans[i]=s1[i]+f1[i]+h;
h=0;
}
}
int flag=1;
///从后往前倒序输出
for(int i=1005; i>=0; i--)
{
if(flag&&ans[i]==0)
{
continue;
}
else
{
cout<<ans[i];
flag=0;
}
}
cout<<endl;
}
return 0;
}