2 条题解
-
1
#include <iostream> #include <vector> #include <string> #include <algorithm> // 添加这行 using namespace std; vector<string> dp(6001); string addStrings(string num1, string num2) { string res; int i = num1.size()-1, j = num2.size()-1; int carry = 0; while(i >= 0 || j >= 0 || carry) { int n1 = i >= 0 ? num1[i--]-'0' : 0; int n2 = j >= 0 ? num2[j--]-'0' : 0; int sum = n1 + n2 + carry; res.push_back(sum%10 + '0'); carry = sum/10; } reverse(res.begin(), res.end()); return res; } void precompute() { dp[0] = "1"; dp[1] = "1"; for(int i = 2; i <= 6000; i++) { dp[i] = addStrings(dp[i-1], dp[i-2]); } } int main() { precompute(); int n; cin >> n; cout << dp[n] << endl; return 0; }
信息
- ID
- 1227
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 224
- 已通过
- 22
- 上传者