最短题解
2025-08-19 10:44:00
发布于:上海
3阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int f[5005][5005],len[5005];
int main(){
int n;
cin>>n;
f[0][0]=1;
len[0]=1;
f[1][0]=1;
len[1]=1;
for(int i=2;i<=n;i++){
len[i]=max(len[i-1],len[i-2]);
for(int j=0;j<len[i];j++)
f[i][j]=f[i-1][j]+f[i-2][j];
for(int j=0;j<len[i];j++){
f[i][j+1]+=f[i][j]/10;
f[i][j]%=10;
}
while(f[i][len[i]]){
f[i][len[i]+1]+=f[i][len[i]]/10;
f[i][len[i]]%=10;
len[i]++;
}
}
for(int i=len[n]-1;i>=0;i--)
cout<<f[n][i];
cout<<endl;
return 0;
}
这里空空如也
有帮助,赞一个