题目
There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).
Input
Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000).
Output
Print the word “yes” if 3 divide evenly into F(n).
那个下标对应的数可以整除3,输出yes
Print the word “no” if not.
Sample Input
0
1
2
3
4
5
分析
先列前12项,找规律,发现:
1,下标%4=2所对应的数都是yes。
2。除以3得到的余数可以表示成递归数列,
a[0]=1,a[1]=2,a[2]=(a[0]+a[1])%3,
a[n]=(a[n-1]+a[n-2])%3
代码
方法一:
#include<iostream>
using namespace std; int main()
{int i ; while(cin>>i) i%4 == 2? cout<<"yes"<<endl:cout<<"no"<<endl; return 0;
}
方法二:
#include<iostream>
using namespace std;
int main()
{long n,i,f1,f2,f3;while(cin>>n && n<1000000){f1=1;f2=2;if(n==0 || n==1)f3=1;elsefor(i=1;i<n;i++){f3=(f1+f2)%3;f1=f2;f2=f3; }if(f3==0)cout<<"yes"<<endl;elsecout<<"no"<<endl; }
}