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