大数相加,以前用C写过大数模板,闲的无聊用C++重新写了一遍相加的,反正加法最简单,就当练练C++的字符串操作吧
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
string add(string s1, string s2)
{
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
string res;
size_t index = 0;
char a, b, temp;
bool ten = false;
while (index < s1.size() || index < s2.size())
{
a = index < s1.size() ? s1[index] - '0' : 0;
b = index < s2.size() ? s2[index] - '0' : 0;
temp = a + b + ten;
res += (temp % 10 + '0');
ten = temp > 9;
index++;
}
if (ten)
res += '1';
reverse(res.begin(), res.end());
return res;
}
int main()
{
vector<string> list;
list.push_back("0");
list.push_back("1");
while (true)
{
string sum = add(list[list.size() - 1], list[list.size() - 2]);
if (sum.size() > 1000)
break;
list.push_back(sum);
}
int n;
while (cin >> n)
cout << list[n] << endl;
return 0;
}