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;
    }
    
    
    
    
  • 相关阅读:
    使用ShareSDK完成第三方(QQ、微信、微博)登录和分享
    Https适配
    AFNetworking实现程序重新启动时的断点续传
    开源Word读写组件DocX 的深入研究和问题总结
    ITTC数据挖掘平台介绍(四) 框架改进和新功能
    聪明的投资者读书笔记1
    word中公式居中编号在最右端
    tensorflow中使用Batch Normalization
    财务自由之路读书笔记二
    mybatis与mysql中的Date和String之间转换
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/5097927.html
Copyright © 2011-2022 走看看