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型就行了