Fibonacci Again(多次取模控制范围)

来源:互联网 发布:licecap for mac 下载 编辑:程序博客网 时间:2024/06/05 18:18

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

012345

Sample Output

nonoyesnonono

Author

Leojay

题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1002&cid=32867
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int f[10000000];int main(){    f[0]=7;    f[1]=11;    int n;    while(~scanf("%d",&n))    {        for(int i=2;i<=1000000;i++)        {            f[i]=(f[i-1]+f[i-2])%3%3%3;        }        if(f[n]==0)            printf("yes\n");        else            printf("no\n");    }    return 0;
 为什么要取模三次:如果你这个数超出了int的范围接下来的%3就不准确了,
 你得在每次计算的时候让f(n)在int 范围内,因此要多次取模。

此题要点:多次取模使其不超过int的范围




原创粉丝点击