题目描述
一个楼梯有 n 级台阶,每次李老师可以上 1 级或者 2 级,但是如果有一步上了 2 级,李老师就会变累,使得他下次只能上 1 阶,请问李老师走到第 n 阶台阶有多少种方法?
输入格式
一个整数 𝑛(1≤𝑛≤107)n(1≤n≤107)。
输出格式
一个整数,表示方法数,结果可能很大,输出结果请对 1e9+7 取模。
样例 #1
样例输入 #1
2
样例输出 #1
2
代码见下
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+5;
const int M=1e9+7;
long long x,f[N][2];
int main()
{
cin>>x;
f[1][0]=1;
f[2][0]=1;
f[2][1]=1;
for(int i=3;i<=x;i++)
{
f[i][0]=(f[i-1][0]+f[i-1][1])%M;
f[i][1]=f[i-2][0]%M;
}
cout<< (f[x][0]+f[x][1])%M;
return 0;
}