A+B Problem(高精)
题目
使用一个ans数组来存储结果。
A+B高精度,顾名思义可以改变其数据范围
从代码for循环开始模拟,先将两个同样数位的数放到ans里,
然后进位,最后模10。
判断是否最后位长度+1
#include <bits/stdc++.h>
using namespace std;
string a1, b1;
int a[600], b[600], ans[600], al, bl, an1;
void plu()
{
reverse(a, a + al);
reverse(b, b + bl);
an1 = max(al, bl);
for(int i = 0; i < an1; i++)
{
ans[i] += a[i] + b[i];
ans[i+1] += (ans[i]) / 10;
ans[i] %= 10;
}
if(ans[an1])
an1++;
reverse(ans, ans + an1);
return ;
}
int main()
{
cin >> a1 >> b1;
al = a1.size();
bl = b1.size();
for(int i = 0; i < al; i++)
a[i] = a1[i] - '0';
for(int i = 0; i < bl; i++)
b[i] = b1[i] - '0';
plu();
for(int i = 0; i < an1; i++)
cout << ans[i];
return 0;
}
浙公网安备 33010602011771号