问题描述:
圆子研究出了一种新的斐波那契数:F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)。 现在她希望你来帮她测试一些数据
input:
每行输入一个整数 n(n <1,000,000)。
output:
在每行中,如果 F(n) 能被 3 整除,则打印单词“ yes”。 如果不能,则打印单词“ no”。
sample input:
0
1
2
3
4
5
sample output:
no
no
yes
no
no
no
题目思想很简单,如果直接用递归可能会超时,所以直接模拟,但最后会发现即使用 long long 表示结果也会超出 long long 所能表示的范围。所以对每次求得的F(n) %3即可。
#include<stdio.h>
int main()
{
long long n;
while(scanf("%I64d",&n)!=EOF)
{
long long a=7;
long long b=11;
long long temp;
if(n==1||n==0)
{
printf("no\n");
}
else
{
for(int i=2;i<=n;i++)
{
temp = (a+b)%3;
a=b;
b=temp;
}
if(b==0)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
}
}