HDU_1021_费布拉切变形
Fibonacci Again
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 50863 Accepted Submission(s): 24079
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.
Print the word "no" if not.
Sample Input
0
1
2
3
4
5
Sample Output
no
no
yes
no
no
no
一来想把数列所有值计算出来,发现数值增长实在太快,到几百的规模时longlong就溢出了。
然后自己推了一下发现,(a+b)%c==(a%c+b%c)%c,这应该是取模运算的性质。 然后就过了。
#include<iostream> #include<cstdio> using namespace std; #define LL long long int f[1000005]; int main() { f[0]=1; f[1]=2; int t=2; while(t<1000005) { f[t]=(f[t-1]+f[t-2])%3; t++; } int n; while(scanf("%d",&n)!=EOF) { if(f[n]==0) printf("yes\n"); else printf("no\n"); } return 0; }