1. 程式人生 > >A題之NowCoder數列

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");
           };
          }
     }
}