问题 B: 【高精度】简单高精度加法
时间限制: 1 Sec 内存限制: 64 MB提交: 94 解决: 27[提交][状态][讨论版]
题目描述
修罗王解决了计算机的内存限制问题,终于可以使用电脑进行大型的魔法运算了,他交给邪狼的第一个任务是计算两个非负整数A、B的和,其中A和B的位数在5000位以内。
输入
共两行数据,第一行为一个非负整数A,第二行为一个非负整数B,A、B的位数均在5000以内。
输出
输出一个非负数,即两数之和。
样例输入
1111111111
2222222222
样例输出
3333333333
提示
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int c,i,j,cnt;
int res[1111];
char a[1111],b[1111];
gets(a);
gets(b);
int lena=strlen(a);
int lenb=strlen(b);
c=0;
cnt=0;
for(i=lena-1,j=lenb-1;i>=0&&j>=0;i--,j--)
{
int p=(a[i]-'0')+(b[j]-'0')+c;
res[cnt++]=p;
c=p/10;
}
while(i>=0)
{
int p=(a[i]-'0')+c;
res[cnt++]=p;
c=p/10;
i--;
}
while(j>=0)
{
int p=(b[j]-'0')+c;
res[cnt++]=p;
c=p/10;
j--;
}
if(c)
{
res[cnt++]=c;
}
for(i=cnt-1;i>=0;i--)
{
cout<<res[i];
}
puts("");
return 0;
}
转载于:https://www.cnblogs.com/AquamarineOnly/p/5676794.html
相关资源:C语言-高精度加法