hiho 编程 第一练 骨牌;

来源:互联网 发布:c语言图形界面 编辑:程序博客网 时间:2024/06/17 10:32

比较简单的一道题;服从斐波那契数列规律;

首先想到的是动态分组,因为木块横放,竖放可以分为两个子问题,以此类推 


F(n) = F(n-1) + F (n-2);


代码如下

#include <iostream>


using namespace std;


int c = 19999997;


long long int countNum(int nums)
{
    long long int ans1 = 1,ans2 = 2;
    if(nums == 1)
        return 1;
    else if (nums == 2)
        return 2;
    else
    {
        for(int i=3;i<nums;++i){
            if(i&1){
                ans1 += ans2;
                ans1 %=c;
            }
            else {
                ans2 += ans1;
                ans2 %= c;
            }
        }
    }
    return (ans1 + ans2)%c;
}


int main ()
{
    int n;
    while(cin>>n){
        cout<<countNum(n)<<endl;
    }
    return 0;
}




0 0
原创粉丝点击