大数高精度运算模板
暂不考虑输入存在负数的情况 / 待补充
1.1 A+B Problem 加法
#include <iostream>
#include <algorithm>
using namespace std;
string add(string a, string b){
string ans;
/* 翻转两个数字字符串,使得后面的for循环从个位开始相加 */
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
/* 初次补0,保证最高位都是‘0’ */
a.push_back('0');
b.push_back('0');
if(a.size() < b.size()) swap(a, b);
/* 短的字符串高位补‘0’,使两字符串位数相等 */
while(b.size() < a.size()) b.push_back('0');
/* 数组c:存放每位相加后的结果 k:字符串补‘0’后的位数 */
int c[1000]={
0}, k = a.size();
/* 从个位开始,模拟加法 */
for(int i = 0; i < a.size(); i++){
int sum = c[i] + a[i]-'0' + b[i] - '0';
c[i] = sum%10;
c[i+1] += sum/10;
}
/* 去除高位零 */
while(c