Problem Description 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 Input0
1
2
3
4
5
Sample Outputno
no
yes
no
no
no
法一:
找规律,等差数列
是从第三个开始所以每四个为yes
#include <stdio.h>
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n%4==2)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
错误代码:
#include<stdio.h>
int main()
{
int a[100000]={0},i,s,n;
a[0]=7%3;
a[1]=11%3;
while(scanf("%d",&n)!=EOF)
{
for(i=2;i<=n;i++)
a[i]=(a[i-1]%3+a[i-2]%3)%3;
if(a[n]==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
给出的结果是Time Limit Exceeded
但这个就是对的,不太明白;
#include <stdio.h>
int main()
{
int a[1000000]={0};
a[0]=7%3;
a[1]=11%3;
int n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=2;i<=n;i++)
a[i]=(a[i-1]%3+a[i-2]%3)%3;
if(a[n]==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}