1021

Fibonacci Again

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 47348 Accepted Submission(s): 22507

Problem Description

There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).

Input

Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000).

Output

Print the word “yes” if 3 divide evenly into F(n).

Print the word “no” if not.

Sample Input

0
1
2
3
4
5

Sample Output

no
no
yes
no
no
no

解题方法

题意就是问这个数列第n个数是否整除3
一种方法是直接矩阵快速幂,每一步对3取模,看结果是否为0 还可以找循环节,由于循环节不随n变化,是个固定的,算出来就是每4个数就循环一次,最后得到结论,n对4取模(n&3),得到2就输出yes就行了

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)==1)
    {
        if((n&3)==2)printf("yes\n");
        else printf("no\n");
    }
    return 0;
}

你可能感兴趣的:(1021)