题目描述
现有n阶楼梯,PIPI从第一阶走到第n阶,每次可以跨一阶或者两阶,问PIPI从第一阶走到第n阶总共有多少种可能。为了防止结果过大,需要让结果对p取模。
ps: p = 1e9+7.
输入
输入包含多组测试用例。
每组样例第一行输入楼梯的阶数n。(1<=n<=1000000)
输出
对于每组样例,输出方案数。最后结果对109+7取模。
样例输入
1
2
3
样例输出
1
2
3
注意
推荐使用scanf、printf,以防超时!
代码实现
#include<stdio.h>
#define MAX 1000005
typedef long long ll;
int n,dp[MAX];
int mod=1e9+7;
int main()
{
// 预处理
dp[1]=1,dp[2]=2;
for(int i=3;i<MAX;i++){
dp[i]=(dp[i-1]+dp[i-2])%mod;
}
// 输入
while(scanf("%d",&n)!=EOF){ // 换成 cin>>n 会超时!!
printf("%d\n",dp[n]);
}
return 0;
}