P1601 A+B Problem(高精)
(这只是高精度的加法哦~)
开始接触一下高精度计算,起码没有动态规划那么复杂~,思想含在代码了:
//高精度算法
#include<iostream>
#include<cstdio>
#include<cstring>
//字符串处理
using namespace std;
int x[510], y[510], c[510];//x,y 将字符串转化为数值(一个下标一位数),c 用来存放结果
string a, b;//使用 string 类型
int main() {
cin >> a >> b;
int la = a.length();
int lb = b.length();
int lc = max(la, lb);//结果位数(是否需要加一在后面判断)
for (int i = 0;i < la;i++) x[la - i] = a[i] - '0';//注意是从 1 到 la(包含)
for (int i = 0;i < lb;i++) y[lb - i] = b[i] - '0';
for (int i = 1;i <= lc;i++) {
c[i] += x[i] + y[i];//用 += 是保留进位!
c[i + 1] += c[i] / 10;
c[i] %= 10;//只保留个位数,十位数以进位的形式体现
}
if (c[lc + 1] > 0) lc++;//如果结果又多了一位就加长 lc
for (int i = lc;i > 0;i--) cout << c[i];//注意是倒序输出!!
return 0;
}