您的位置:首页 > 大数据 > 人工智能

HDOJ--Fibonacci Again

2016-05-31 20:24 489 查看
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 Input

0

1

2

3

4

5

Sample Output

no

no

yes

no

no

no

思路:若递归则栈溢出,需要迭代化。

坑:如果每次都求f(n)的话数据会溢出,所以可以f(n)存成%3的值即值为0时为yes否则为no

#include <iostream>
using namespace std;

int main()
{
int n;
while (cin>>n)
{
int fa = 7;             //f(n-1)
int fb = 11;            //f(n-2)
for (int i = 2; i <= n; ++i)
{
int sum = (fa + fb)%3;
fa = fb;
fb = sum;
}
if (n <= 1)
{
cout << "no" << endl;
}
else
{
if (fb== 0)
cout << "yes" << endl;
else
cout << "no" << endl;
}
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HDOJ Fibonacci