斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。这里我们定义另外一种斐波那契数列: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)。编程计算该数列的前n(n<1000000)项是否能被3整除。
输入格式:
输入为一个正整数n(n<1000000)。
输出格式:
输出上述数列前n项能否被3整除,能则输出“yes ”,否则输出"no "。注意:每个"yes"和"no"后面都有一个空格。
输入样例1:
2
结尾无空行
输出样例1:
no no
结尾无空行
输入样例2:
6
结尾无空行
输出样例2:
no no yes no no no
结尾无空行
对第一个, 第二个单独判断, 从第三个开始就要等于前两个的和。
代码如下:
#include <stdio.h>
int func(int num)
{
if(num%3 == 0)
return 1;
return 0;
}
int main()
{
int f0=7, f1=11;
int tmp;
int n;
scanf("%d", &n);
if(n<0 || n>=1000000) return -1;
if(n == 1) printf("no");
else if(n == 2) printf("no no");
else if(n >= 3)
{
for(int i=0; i<n; i++)
{
if(i == 0) printf("no ");
else if(i == 1) printf("no ");
else if(i > 1)
{
tmp = f0 + f1;
f0 = f1;
f1 = tmp;
printf("%s", func(f1)?"yes":"no");
if(i != n-1) printf(" ");
}
}
}
return 0;
}