这道题要找规律,找完规律后发现简单到要死。
下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13 值 1 2 0 2 2 1 0 1 1 2 0 2 2 1 输出 no no yes no no no yes no no no yes no no no 这样我们就得到了如下规律:从第2个开始每隔4个循环一次。
法一:找规律,T=4
#include <stdio.h> int main() { int i,n; while (~scanf("%d",&n)) { if((n-2)%4==0) printf("yes\n"); else printf("no\n"); } return 0; } 法二:T=8 #include<stdio.h> int main() { int f[10],n,i; while(scanf("%d",&n)!=EOF) { n=n%8; f[0]=7;f[1]=11; for(i=2;i<=n;i++) f[i]=f[i-1]+f[i-2]; if(f[n]%3==0) printf("yes\n"); else printf("no\n"); } return 0; }法三:(似懂非懂)
#include <stdio.h> int a[1000009]; int i; int main () { int n; a[0] = 7 % 3; a[1] = 11 % 3; for ( i = 2; i < 1000009; i ++ ) { a[i] = ( a[i - 1] + a[i - 2] ) % 3; } while ( scanf ("%d", &n) != EOF ) { if ( !a[n] ) printf ("yes\n"); else printf ("no\n"); } return 0; }