新手求教(急) 题目:(高精度加法)
输入两个整数 A、B ,并输出它们的和。已知A 、B 都不超过1000位。
输入格式 输入分两行
输出格式 输出和
样例输入 11111111111111111111111111111111111111 22222222222222222222222222222222222229 样例输出 33333333333333333333333333333333333340 问题提示 不考虑输入数据为负数的情况
请问一下怎么改,在不改变代码整体的情况下
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
long long ans[1010],x[1005],y[1005];//答案初始为0
int main() {
string a,b;
cin>>a>>b;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());//先倒叙,最小位对齐不容易出错
for(int i =0;i<a.size();i++){//装在数组里
x[i] = int(char(a[i]))-'0';
}
for(int i =0;i<b.size();i++){
y[i] = int(char(b[i]))-'0';
}
for(int i = 0;i<=max(a.size(),b.size());i++){//和
ans[i] += x[i]+y[i];
if(ans[i]>9){
ans[i] = ans[i]%10;
ans[i+1] += 1;
}
}
bool sp = 0;
for(int i = max(a.size(),b.size())-1;i>=0;i--){//从第一个不是0的地方打印
if(ans[i]!='0'){
sp = 1;
}
if(sp){
cout<<ans[i];
}
}
if(!sp){//如果一直没打印就证明是肯定是0,0+0
cout<<'0';
}
}