P1255 数楼梯

题目描述

楼梯有 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);
    }
}

 

posted @ 2020-11-13 17:03  xuewenのblog  阅读(166)  评论(0编辑  收藏  举报