有另一种斐波那契数列:
F0=7,F1=11,Fn=Fn−1+Fn−2 (n>=2)。
输入格式
输入数据有多行组成,每一行上是一个整数
n(n≤10^6)。
输出格式
如果 Fn 能被 3 整除,那么打印一行"yes",否则,打印一行"no"。
提示
先使用数组把 1∼10^6的 Fi
计算出来,然后每次查询,要不然会超时的。
样例输入
0
1
2
3
4
5
样例输出
no
no
yes
no
no
no
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int ans[1000006]={0};//储存数据
ans[0]=7;
ans[1]=11;
for(long long int i=2;i<=1000001;i++){
ans[i]=ans[i-1]%3+ans[i-2]%3;
//只需判断是否能被3整除而且容易爆掉longlongint
//所以不需要存储斐波拉数列具体数据
}
long long int n;
while(scanf("%lld",&n)!=EOF){
if(ans[n]%3==0){
printf("yes\n");
}else{
printf("no\n");
}
}
return 0;
}
坑点:
数据量大而且数据范围容易超过longlongint范围