注解
1、打表。1000000的范围,开一个全局数组打表就可以了。
2、模运算。判断一个数是否被3整除,因此每个数只需要取对3的余数就可以了。这样就可以避免大数的运算。
代码
#include <stdio.h>
#include <string.h>
#define maxn 1000001
int a[maxn];
int main(){
memset(a, 0, sizeof(a));
a[0] = 1;
a[1] = 2;
for(int i=2; i<maxn; i++){
a[i] = (a[i-1] + a[i-2]) %3;
}
int n;
while(scanf("%d", &n)!=EOF){
if(a[n]){
printf("no\n");
}
else{
printf("yes\n");
}
}
return 0;
}