题目描述
数字有一千位,使用高精加法模板就好啦。
C++ 代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int get(char p)
{
return p - '0';
}
vector<int> add(vector<int> a, int b)
{
int t = 0, len = a.size();
vector<int> res;
reverse(a.begin(), a.end());
for (int i = 0; i < len; i++)
{
t += a[i] + b;
res.push_back(t % 10);
t /= 10;
b = 0;
}
if (t) res.push_back(1);
reverse(res.begin(), res.end());
return res;
}
int main()
{
string a;
cin >> a;
vector<int> res;
res.push_back(0); // 一开始是和0相加噢
while (a.size() > 1)
{
res.clear();
res.push_back(0); // 每次开始
for (int i = 0; i < a.size(); i++)
{
int t = get(a[i]);
res = add(res, t); // 传参于高精度模板之中
}
a = "";
for (int i = 0; i < res.size(); i++) // 每次拿到结果预备下一次相加
{
a += res[i] + '0';
}
}
cout << a << endl;
return 0;
}