(HDU)1021 --Fibonacci Again(又是斐波那契)

描述:

还有另一种斐波纳契数:F(0)= 7,F(1)= 11,F(n)= F(n-1)+ F(n-2)(n> = 2)。


输入
输入由一系列行组成,每行包含一个整数n。 (n <1,000,000)。


输出
如果F(n)可以被3整除,则输出单词“yes”。

如果不可以,输出单词“no”。
题目

这个题目找规律就好了,因为n的范围比较大,如果递推肯定是超时的。

注意:a%c+b%c=(a+b)%c

最多有3*3=9种可能性,可以试着打表mod3的结果:

F(0)余1  F(1)余2  F(2)余0  F(3)余2  F(4)余2  F(5)余1  

F(6)余0  F(7)余1  F(8)余1  F(9)余2

F(8)和F(9)开始对应F(0)和F(1),因此循环节找到了,周期为8。

F(8k+*) 1 2 3 4 5 6 7 0
2 0 2 2 1 0 1 1
判断 no yes no no no yes no no
 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n,m[8]={1,2,0,2,2,1,0,1};
 9     while(~scanf("%d",&n))
10     {
11         n=m[n%8];
12         if(n==0) printf("yes
");
13         else printf("no
");
14     }
15     return 0;
16 }
代码
原文地址:https://www.cnblogs.com/ACDoge/p/6125638.html