刚开始,我以为这个题需要求出0~1000000之间的Fibonacci数,后来想想Fibonacci数的增长速度特别快,肯定不会让真正求出所有的Fibonacci数。然后我仔细想想,发现3的倍数很有规律的,像f(2),f(6),f(10),f(14),f(18).....这样的才是3的倍数,所以问题就变得很简单啦~
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int f[1000000];
void fib(){
int i;
memset(f,0,sizeof(f));
for(i=2; i<1000000; i=i+4)
f[i]=1;
}
int main(){
int n;
fib();
while(scanf("%d",&n)!=EOF){
if(f[n]) printf("yes\n");
else printf("no\n");
}
return 0;
}