思路:因为n最大有1000000,所以普通做法肯定超时或者超范围,所以观察规律,前两项的对3取模,得到的值相加等于3,则yes,否则no
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int fb[10];
fb[0]=1;
fb[1]=2;
int n;
int i;
while(scanf("%d",&n)!=EOF)
{
n=n%8;
for(i=2;i<=n;i++)
{
fb[i]=(fb[i-2]+fb[i-1])%3;
}
if(fb[n]==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}