
有carry和temp就可以。
append(5,‘0’);啊!!!前个后!!不是append('0',5);
题目:
数列A满足An = An-1 + An-2 + An-3, n >= 3
编写程序,给定A0, A1 和 A2, 计算A99
Input
输入包含多行数据
每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 32767)
数据以EOF结束
Output
对于输入的每一行输出A99的值
Sample Input
1 1 1
Sample Output
69087442470169316923566147
#include#include #include using namespace std; string BigNumber(string a, string b) { int la = a.length(); int lb = b.length(); reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); if (la > lb) b.append(la - lb, '0'); else if (lb > la) a.append(lb - la, '0'); int carry = 0; for (int i = 0; i < a.length(); i++) { int temp = carry + a[i] - '0' + b[i] - '0'; a[i] = temp % 10 + '0'; carry = temp / 10; } if (carry) { a.append(1, '1'); } int k; for (int i = a.length() - 1; i >= 0; i--) if (a[i] != '0') { k = i; break; } a = a.substr(0, k + 1); reverse(a.begin(), a.end()); return a; } int main() { string s[101]; while (cin>>s[1]>>s[2]>>s[3]) { for (int i = 4; i <= 100; i++) { s[i] = BigNumber(BigNumber(s[i - 3], s[i - 2]), s[i - 1]); } cout << s[100] << endl; } }