A題之NowCoder數列

題目描述
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");
           };
          }
     }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章