2198 - 最简单的难题

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

我们定义F(0) = 7, F(1) = 11, F(n) = F(n - 1) + F(n - 2)

题目输入

输入数据包括多行,每行一个个数字nn < 1,000,000

题目输出

如果F(n)能被3整除就输出yes,不能则输出no

输入/输出样例

输入格式

0
1
2
3
4
5

输出格式

no
no
yes
no
no
no

C语言解答

#include<stdio.h>
int main()
{
	int n, i, a, b, c;
	while(scanf("%d",&n) != EOF)
	{
		a = 1;
		b = 2;
		c = 3;
		for(i = 2; i <= n; i++)
		{
			c = (a + b) % 3;
			a = b;
			b = c;
		}
		if(c == 0)
			puts("yes");
		else
			puts("no");
		
	}
	
	return 0;	
}

C++解答

#include <cstdio>
const int V = 1000000 + 50;
int num[V];
int main() {
    int i, n;
    num[0] = 1;
    num[1] = 2;
    for(i = 2; i < V; ++i)
        num[i] = (num[i - 1] + num[i - 2]) % 3;
    while(~scanf("%d", &n))
        printf("%s\n", num[n] ? "no" : "yes");
}