标签:
题意:
F(0)= 7, F(1) = 11
F(n) = ( F(n-1) + F(n-2) ) (n>=2).
输入n,若F(n)(mod3)为0则输出yes,否则输出no
题解:
如果直接暴力求解,由于n可以达到1,000,000的规模,必定会超时或栈溢出。因此采用找规律的方法。
n 0 1 2 3 4 5 6 7 8 9 10 11 12 13
F(n)mod3 1 2 0 2 2 1 0 1 1 2 0 2 2 1
从n=2开始每隔4个出现一次符合条件的,即将所有的n分为8个一组,每组的第3个(n%8==2)和第7个(n%8==6)符合条件。
代码:
1 #include <stdio.h> 2 int main(void) 3 { 4 int n; 5 while(scanf("%d", &n) != EOF) 6 { 7 if(n%8==2 || n%8==6) 8 printf("yes\n"); 9 else 10 printf("no\n"); 11 } 12 return 0; 13 }
标签:
原文地址:http://www.cnblogs.com/mycd/p/5656155.html