spirittingle @ 2024-12-07 14:31:42
#include<iostream>
using namespace std;
long long dp[100][5001];
const long long MOD=1000000000000000;;
int main()
{
int n;
cin>>n;
dp[0][0]=1;
dp[0][1]=2;
for(int i=2;i<n;i++){
dp[0][i]=(dp[0][i-1]+dp[0][i-2])%MOD;
long long c=(dp[0][i-1]+dp[0][i-2])/MOD;
for(int k=1;k<100;k++){
dp[k][i]=(c+dp[k][i-1]+dp[k][i-2])%MOD;
c=(c+dp[k][i-1]+dp[k][i-2])/MOD;
}
}
for(int i=99;i>=0;i--){
if(dp[i][n-1]>0){
for(int j=i;j>=0;j--){
cout<<dp[j][n-1];
}
break;
}
}
return 0;
}
by spirittingle @ 2024-12-07 14:38:40
@yzm0325 我没看到取模啊,我太蠢了
by spirittingle @ 2024-12-07 14:44:31
@yzm0325 我输出没有取模哇,我是一个一个 long long 表示15位,5000算出来1080位,我也输出的1080位