hdu 1021 Fibonacci Again

题目分析

这里题目意思我就不说了,直接讲分析。我记得以前看过的一个东西就是如果如果一个数能被3整除那么这个数各个数位上的数相加的和一定能整除3,举一些例子大家看一下3,6,9,12,15,21,36,45,102,132,于是我就直接将大于10的数的各位数字直接相加然后得到0~1000000的f值,然后判断是否整除3,这样就可以得出结论了。

#include <cstdio>
const int maxn = 1000005;
int f[maxn];

int main()
{
    f[0] = 7,f[1] = 2; //这里的2是11的个位与十位相加的结果
    for(int i = 2; i < maxn; i++) //预处理
    {
        f[i] = f[i-1]+f[i-2];
        if(f[i] >= 10)
            f[i] = f[i]/10 + f[i]%10;
    }
    int n;
    while(scanf("%d", &n) != EOF)
    {
        if(f[n]%3) printf("no\n");
        else printf("yes\n");
    }
    return 0;
}

你可能感兴趣的:(hdu 1021 Fibonacci Again)