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; }
-
0
(缺失一部分)
int main(){ IOS; cin>>n; if(n<3){ //特殊判断 } a[1]=1,b[1]=2; for(int i=3;i<=n;i++){ for(int j=1;j<=len;j++)c[j]=a[j]+b[j]; for(int j=1;j<=len;j++){ if(c[j]>9){ //处理进位 if(j+1>len)len++; } } for(int j=1;j<=len;j++)a[j]=b[j],b[j]=c[j]; } for(int i=len;i>=1;i--)//输出部分 return 0; }
- 1
信息
- ID
- 1227
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 224
- 已通过
- 22
- 上传者