题目描述
楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
输入格式
一个数字,楼梯数。
输出格式
输出走的方式总数。
输入输出样例
输入
4
输出
5
说明/提示
- 对于 60%的数据 N<=50
- 对于 100%的数据 N<=5000
题目分析
对于N = 1,和N = 0的时候,我们可以明显的得到 f(0) = 0,f(1) = 1,也就是楼梯层数为1和0只有一种方式
而对于更多的楼梯阶数,要么一次走一格,要么一次走两格,那我每次的走法就等于=上一格的方案数+上上格的方案数咯,这就推出了方程:
这就是著名的斐波那契数列的一个例子,但是想到这一步你只能拿到60分,我们还要考虑到int 和long类型可能会越界导致代码提交不通过
这里呢我写的是java版的代码,java自带大数运算,所以可以偷一波懒了,其他语言的可能就要解决大整数的问题了
代码
public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); if(n==0) { System.out.print(0);return; } if(n==1) { System.out.print(1);return; } BigInteger a=BigInteger.ONE,b=BigInteger.ONE,c=BigInteger.ZERO; for(int i=2;i<=n;++i) { c=a.add(b); a=b; b=c; } System.out.print(c); } }