1. 程式人生 > 實用技巧 >[Luogu] P2260 [清華集訓2012]模積和

[Luogu] P2260 [清華集訓2012]模積和

題目描述

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