题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021
题目大意:按给定的初值计算Fibonacci数列,给定数列的中的数的位置,判断该位置上的数字能否被3整除,若能,输出“yes”,否则输出“no”。
解题思路:在计算数列的时候就mode3,若给定位置上的值为0,则输出“yes”,否则输出“no”。
AC代码:
#include <iostream>
using namespace std;
int fab[1000005];
int main()
{
int n;
fab[0]=7;
fab[1]=11;
for(int i=2;i<1000000;i++)
{
fab[i] = (fab[i-1]%3+fab[i-2]%3)%3;
}
while(cin>>n)
{
if(fab[n]==0)cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}