A題之NowCoder數列
阿新 • • 發佈:2019-01-27
題目描述
NowCoder最近在研究一個數列:
* F(0) = 7
* F(1) = 11
輸入描述:
輸入包含多組資料。
每組資料包含一個整數n,(0≤n≤1000000)。
輸出描述:
對應每一組輸入有一行輸出。
如果F(n)是3的倍數,則輸出“Yes”;否則輸出“No”。
輸入例子:
0
1
2
3
4
5
輸出例子:
No
No
Yes
No
No
No
時間限制 3000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB
正確解法:
f(n)=3f(n-1)+2f(n-4)
只要f(n-4)是3的倍數,那麼f(n)就一定是3的倍數
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
while(cin.hasNextInt())
{
int n=cin.nextInt();
if ((n-2)%4==0)
{
System.out.println("Yes");
}
else {
System.out.println("No");
};
}
}
}
NowCoder最近在研究一個數列:
* F(0) = 7
* F(1) = 11
* F(n) = F(n-1) + F(n-2) (n≥2)
他稱之為NowCoder數列。請你幫忙確認一下數列中第n個數是否是3的倍數。輸入描述:
輸入包含多組資料。
每組資料包含一個整數n,(0≤n≤1000000)。
輸出描述:
對應每一組輸入有一行輸出。
如果F(n)是3的倍數,則輸出“Yes”;否則輸出“No”。
輸入例子:
0
1
2
3
4
5
輸出例子:
No
No
Yes
No
No
No
時間限制 3000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB
最開始採用遞迴法和迴圈來求解每一個N對應的數值,然後在求是否為3的倍數,都超過時間限制,說明去求解每一個n的值是行不通的,所以想到了去找每一個數的規律。
f(n)=3f(n-1)+2f(n-4)
只要f(n-4)是3的倍數,那麼f(n)就一定是3的倍數
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
while(cin.hasNextInt())
{
int n=cin.nextInt();
if ((n-2)%4==0)
{
System.out.println("Yes");
}
else {
System.out.println("No");
};
}
}
}