关闭

HDOJ--Fibonacci Again

标签: HDOJFibonacci
82人阅读 评论(0) 收藏 举报
分类:

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;

}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7314次
    • 积分:190
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:0篇
    • 译文:7篇
    • 评论:3条
    最新评论