Description
继上次zbj在楼梯上跳台阶玩了很久之后,他获得了一个很强(la)力(ji)的能力,那就是上楼梯的时候可以跨任意偶数级台阶....
今天上完课,zbj又开始了他的跳台阶之旅,现在他想知道跳到第N级台阶有多少种方案数。
P.S.zbj从楼梯外也就是第0级开始跳,并且依旧可以选择跳一级
Input
多组数据(<=100组),每组数据包含一个整数N(2<=N<=10000)
Output
对于每组数据包含一个整数表示跳到第N级台阶的方案数(答案对100000007取模)
Sample Input
3
4
Sample Output
3
6
解析:就两种跳法,跳一阶或者偶数阶(2,4,6,8....),注意f[0]=1,然后之后的f[ i ]是f[ i-1 ]跳1阶的方案数加上f[ i-2 ],f[ i-4 ],f[ i-6 ].....的方案数的和,注意 i-x 要大于等于0.
#include <stdio.h>
int f[10005];
int main()
{
int n,sum,k,i;
f[0]=1;
for(i=1;i<=10000;i++)
{
k=i-2;
sum=f[i-1];//sum记录累加和
while(k>=0) sum=(sum+f[k])%100000007,k-=2;//偶数阶,不断-2
f[i]=sum;
}
while(~scanf("%d",&n)) printf("%d\n",f[n]);
return 0;
}