思路:打表,数组保存,每个数对3取余。保存所有的数。然后询问一个判断输出一个。
代码:
#include <iostream> #include <cstdio> using namespace std; const int MAX_ = 1000010; int f[MAX_]; void init(){ f[0]= 1; f[1] = 2; for(int i = 2; i < MAX_; ++i){ f[i] = (f[i-1] + f[i-2])%3; } } int main(){ //freopen("f:\\out.txt","w",stdout); long long n; init(); while(cin>>n){ if(f[n]){ cout<<"no"; } else cout<<"yes"; cout<<endl; } return 0; }