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).
Print the word "no" if not.
Sample Input
Sample Output
Input
Print the word "no" if not.
0 1 2 3 4 5
no no yes no no no
刚开始觉的数据挺大,要用大数打表,先把1到N的斐波契那全搞出来,然后再求余;但想到之前做过的一道题,发现像这种大数和求余结合在一起的题,其实可以利用求余将
大数给化解,用普通的数组就能解决,也就是一边斐波契那,一边求余;
#include <iostream>
#include <cstdio>
#include <cstring>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
int a[1000001];
int main()
{
int T;
//freopen("1.txt","r",stdin);
memset(a,0,sizeof(a));a[0]=1,a[1]=2;
for(int i=2;i<=1000000;i++){
a[i]=a[i-1]+a[i-2];a[i]%=3;
}
while(scanf("%d",&T)!=EOF)
{
if(a[T]==0)cout<<"yes\n";
else cout<<"no\n";
}
return 0;
}