题目描述
从学姐那里改良的高精度算法
样例
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
const int N = 110;
typedef pair<int, int> pii;
string a, b;
vector<int> ans,bns,c;
void highAccuracyAddition(vector<int>& a,vector<int>& b)//大的放前面,小的放后面
{
if(a.size() < b.size()) return highAccuracyAddition(b,a);
int t = 0,sum;
for(int i = 0 ; i < a.size() ; i++)
{
if(i < b.size())
sum = a[i] + b[i] + t;
else sum = a[i] + t;
c.push_back(sum % 10);
t = sum / 10;
}
if(t == 1) c.push_back(1);
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0); std::cout.tie(0);
cin >> a >> b;//这么大的数据长度只有字符串了
for(int i = a.size() - 1 ; i >= 0 ; i--) ans.push_back(a[i]-'0');//先存储时访问的时候先被访问
for(int i = b.size() - 1; i >= 0 ; i--) bns.push_back(b[i]-'0');//上面循环的话从
highAccuracyAddition(ans,bns);
reverse(c.begin(),c.end());
for(int x : c) cout << x;
cout << "\n";
return 0;
}