PAT乙級(1)母牛的故事 童年生活二三事

PAT乙級(1)母牛的故事 童年生活二三事

題目:

鏈接:https://www.nowcoder.com/questionTerminal/d948f2f33a5f49bc800c5a85fe001d9a來源:牛客網

輸入描述:
輸入數據由多個測試實例組成,每個測試實例佔一行,包括一個整數n(0<n<55),n的含義如題目中描述。
輸出描述:
對於每個測試實例,輸出在第n年的時候母牛的數量。每個輸出佔一行。

示例1

輸入

2
4
5

輸出

2
4
6

思路:

手動計算出前幾年的母牛數,然後找規律

年份 1 2 3 4 5 6 7

數量 1 2 3 4 6 9 13

從第4年起 a[i] = a[i-1]+[i-3];

和計算斐波那契數列一樣的方法,但由於是要多次輸入輸出,所以需要建立一個數組存放.不能使用單變量.如果只是返回某年的數量,可以避免數組的使用.

代碼:

 public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int[] a = new int[56];
        a[1] = 1;
        a[2] = 2;
        a[3] = 3;
        for (int i = 4; i < a.length; i++)
            a[i] = a[i - 1] + a[i - 3];
        while (sc.hasNext())
        {
            int c = sc.nextInt();
            System.out.println(a[c]);
           /*
           https://blog.csdn.net/yangxue_mifen/article/details/78336203
             Scanner sc = new Scanner(System.in);
            此句 表示從控制檯獲取數據,
            sc.hasNext() 表示你是否有輸入數據,
            while語句塊 表示當你輸入數據的時候,就執行輸出sc.next()(輸出內容)
            所以只要你輸入數據了,它就可以執行,
            所以後臺只是開了一塊內存,一直未關閉,不算死循環
            2hasNext()這個方法是如果此掃描器的輸入中有另一個標記,則返回 true。
            在等待要掃描的輸入時,此方法可能阻塞。掃描器將不執行任何輸入。所以循環會一直下去。
            你可以設置一個終止符,調用hasNext()的重載方法hasNext(String patten):
            *如果下一個標記與從指定字符串構造的模式匹配,則返回 true。掃描器不執行任何輸入。
            例:以輸入"0",結束輸出
            Scanner sc = new Scanner(System.in);
            while (!sc.hasNext("0")) {
            System.out.println(sc.next());
           */
        }
    }

題目描述

NowCoder小時候走路喜歡蹦蹦跳跳,他最喜歡在樓梯上跳來跳去。 但年幼的他一次只能走上一階或者一下子蹦上兩階。 現在一共有N階臺階,請你計算一下NowCoder從第0階到第N階共有幾種走法。

輸入描述:

輸入包括多組數據。每組數據包括一個整數n, (1≤n≤90)。

輸出描述:

對應每個輸入包括一個輸出。爲redraiment到達第n階不同走法的數量。

輸入例子:

1
2

輸出例子:

1
2

思路:

和上面那一題一樣,列出前幾項,然後找出規律

1 2 3 5 8…

是以第一項爲1,第二項爲2 的斐波那契數列

代碼:

public class PAT2
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        long[] a = new long[92];
        //後面的數會很大,所以得用long 來存

        a[1] = 1;
        a[2] = 2;

        for (int i = 3; i < a.length; i++)
            a[i] = a[i - 1] + a[i - 2];
        while (sc.hasNext())
        {
            int c = sc.nextInt();
            System.out.println(a[c]);
        }
    }
}

第一次使用int數組,報錯,提示46項的值爲 負值.看了下其他人的代碼才發現超過int 的最大值,所以纔會有負值.換了long型就行了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章