zoukankan      html  css  js  c++  java
  • 【NOIP2013模拟联考6】选课(select)

    Description
    你真的认为选课是那么容易的事吗?HYSBZ的ZY同志告诉你,原来选课也会让人产生一种想要回到火星的感觉。假设你的一周有n天,那么ZY编写的选课系统就会给你n堂课。但是该系统不允许在星期i和星期i+1的时候选第i堂课,也不允许你在星期n和星期一的时候选第n堂课。然后连你自己也搞不清哪种选课方案合法,哪种选课不合法了。你只想知道,你到底有多少种合法的选课方案。

    Input
    有多组数据,请读到文件末结束。

    对于每组数据仅一行,1个正整数 n。

    Output
    对于每组输出只有一行,1个非负整数,为选课方案数量 mod (10^9+7).

    Sample Input
    2

    4

    Sample Output
    0

    2

    【样例解释】

    对于样例二:
    周一上第二堂课,周二上第三堂课,周三上第四堂课,周四上第一堂课;
    周一上第三堂课,周二上第四堂课,周三上第一堂课,周四上第二堂课。
    共2种选课方案。

    Data Constraint
    对于第i组数据,n<=10*i, 1<=i<=3
    对于100%的数据:1<=n<=100000
    .
    .
    .
    .
    .

    分析

    水法真神奇,暴力出奇迹!!!
    考场某人打表找规律发现答案的前缀和 f
    满足 f[i]=(f[i−1]+f[i−2])∗(i−1)+f[i−3]
    .
    .
    .
    .
    .

    程序:
    #include<iostream>
    using namespace std;
    int main()
    {
        int module=1000000007,n;
        long long f[100001];
        f[1]=f[2]=0;
        f[3]=1;
        for (int i=4;i<=100000;i++)
        {
            f[i]=(f[i-1]+f[i-2])*(i-1)+f[i-3];
            f[i]%=module;
        }
        cin>>n;
        while (n!=0)
        {
            cout<<(f[n]-f[n-1]+module)%module<<endl;
            n=0;
            cin>>n;
            if (n==0) break;
        }
        return 0;
    }
  • 相关阅读:
    从零开始在阿里云服务器(Ubuntu)上部署Rails应用
    rspec使用
    ubuntu安装和配置SVN
    给asp:DropDownList追加项到顶层显示
    js生成、删除表格方法
    js验证
    GridView和CheckBox连用,实现全选
    javascript;css;firefox;ie;区别
    回调示例
    GridView联合CheckBox实现全选功能[百度空间搜集]
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9499916.html
Copyright © 2011-2022 走看看