现在小瓜想走上一个一共有n级的台阶,由于小瓜的腿比较短,他一次只能向上走1级或者2级台阶。小瓜想知道他有多少种方法走上这n级台阶,你能帮帮他吗?
输入格式
一行一个整数n(n<=100000),表示一共有n级台阶。
输出格式
一行一个整数,表示小瓜上台阶的方案数*对100003取余*的结果。
输入样例
3
输出样例
3
只考虑最后一步走 11 阶还是 22 阶,这是两种完全不同的方案。所有 n−1n−1 的方案都可以通过再走 11 阶转为 nn 的方案,所有 n−2n−2 的方案都可以通过再走 22 阶转为 nn 的方案。所以存在递推式:
F(n)=F(n−1)+F(n−2)
这也是最终方案数是斐波那契数列的原因。
// 递推版
f[1] = f[2] = 1;
for(int i = 3; i <= n; i++){
f[i] = f[i-1] + f[i-2];
}
// 递归函数
int F(int x){
if(x == 1 || x == 2) return 1;
return F(x-1) + F(x-2);
}