题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021
题目大意是:已知 F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2);如果F(n)%3的值为0,则输出“yes”,否则输出“no”
这个题目主要是找规律,找到规律就很简单。我们可以先求出前面几个数除以3的余数,然后得知其余数分别为1,2,0,2,2,1,0,1,1,2,0
,从中我们可以得出一个规律:其余数每八个为一轮,当余数为0时,说明F(n)可以整除3,在F(0)到F(7)的一个轮回中只有F(2)和F(6)
符合条件。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n&&n<1000000)
{
if(n%8==2 ||n%8==6) cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}