zoukankan      html  css  js  c++  java
  • QDU67 礼上往来(错排问题)

    每当节日来临,女友众多的xxx总是能从全国各地的女友那里收到各种礼物。

    有礼物收到当然值得高兴,但回礼确是件麻烦的事!

    无论多麻烦,总不好意思收礼而不回礼,那也不是xxx的风格。

      

    现在,即爱面子又抠门的xxx想出了一个绝妙的好办法:他准备将各个女友送来的礼物合理分配,再回送不同女友,这样就不用再花钱买礼物了!

      

    假设xxx的n个女友每人送他一个礼物(每个人送的礼物都不相同),现在他需要合理安排,再回送每个女友一份礼物,重点是,回送的礼物不能是这个女友之前送他的那个礼物,不然,xxx可就摊上事了,摊上大事了......

      

    现在,xxx想知道总共有多少种满足条件的回送礼物方案呢? 

    输入数据第一行是个正整数T,表示总共有T组测试数据(T <= 100); 每组数据包含一个正整数n,表示叽叽哥的女友个数为n( 1 <= n <= 100 )。

    请输出可能的方案数,因为方案数可能比较大,请将结果对10^9 + 7 取模后再输出。 每组输出占一行。

    复制
    3
    1
    2
    4
    0
    1 
    9

    思路:

    错排公式:f[n]=(n-1)*(f[n-1]+f[n-2]);

    /* ***********************************************
    Author        :devil
    Created Time  :2016/1/4 10:02:06
    ************************************************ */
    
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <queue>
    #include <map>
    #include <set>
    #include <vector>
    #include <cstdio>
    using namespace std;
    const long long mod=1e9+7;
    long long f[105];
    int main()
    {
        //freopen("in.txt","r",stdin);
        f[1]=0;
        f[2]=1;
        for(int i=3; i<=100; i++)
            f[i]=(i-1)*(f[i-1]+f[i-2])%mod;
        int t,n;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            printf("%d
    ",f[n]);
        }
        return 0;
    }
    
    
    
    
  • 相关阅读:
    AutoMapper在ABP框架
    Github for Windows使用介绍
    Net中的反应式编程
    webstorm创建nodejs + express + jade 的web 项目
    Nancy 框架
    Quartz.NET 任务调度框架
    从电商秒杀与抢购谈Web系统大规模并发
    SVN中tag branch trunk用法详解
    Hsql中In没有1000的限制
    Gradle sourceCompatibility has no effect to subprojects(转)
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/5097927.html
Copyright © 2011-2022 走看看