2 条题解
- 1
信息
- ID
- 798
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 95
- 已通过
- 51
- 上传者
很经典的递推问题,设 f[i] 表示 i 个台阶时的方案,那么有:
f[i]=⎩⎨⎧1,i=12,i=24,i=3f[i−1]+f[i−2]+f[i−3],i>3
但这题的难点在于不开long long见祖宗
。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=65;
int n;
ll f[N]={0,1,2,4};
int main(){
scanf("%d",&n);
for(int i=4;i<=n;i++)
f[i]=f[i-1]+f[i-2]+f[i-3];
printf("%lld",f[n]);
return 0;
}