zoukankan      html  css  js  c++  java
  • HDU2049 不容易系列之(4)——考新郎 错排 不要用 long long

    不容易系列之(4)——考新郎

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 8373    Accepted Submission(s): 3155


    Problem Description

    国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:


    首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;
    然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.
    最后,揭开盖头,如果找错了对象就要当众跪搓衣板...

    看来做新郎也不是容易的事情...

    假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
     

    Input

    输入数据的第一行是一个整数C,表示测试实例的个数,然后是C行数据,每行包含两个整数N和M(1<M<=N<=20)。
     

    Output

    对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。
     

    Sample Input
    2
    2 2
    3 2
     

    Sample Output
    1
    3
     
      long long 错啊错,有木有,改成__int64 A掉的有木有,LINUX 不能用 __int64 有木有。 
      言归正传,该题考的是一个错排公式。错排,即造成了最大的混乱度,没有一对是配对的。那么分析假设如下:
      A B C D E F G    设解为T[7],现在只考虑A与b连接的情况,其他情况一样的,那么假如B与a相连的话那么就相当于求解T[5],假设B不与a连接,那么就和B不与原本的b
      a  b c d e  f  g    不相连没有什么区别了,所以就相当于求解T[6]了。  所以就有公式 T[n]= ( n- 1 )* ( T[n- 1]+ T[n- 2] )。
      代码如下:
    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    __int64 rec[21];
    
    __int64 zuhe( int n, int m )
    {
        __int64 a= 1;
        for( int i= 0; i< n; ++i )
        {
            a*= ( m- i );
            a/= ( i+ 1 );
        }
        return a;
    }
    
    int main(  )
    {
        rec[1]= 0, rec[2]= 1;
        for( int i= 3; i<= 20; ++i )
        {
            rec[i]= ( i- 1 )* ( rec[i- 1]+ rec[i- 2] );
        }
        int T;
        scanf( "%d", &T );
        while( T-- )
        {
            int m, n;
            scanf( "%d %d", &m, &n );
            printf( "%I64d\n", zuhe( n, m )* rec[n] );
        }
        return 0;
    }
    

  • 相关阅读:
    JS LeetCode 1423. 可获得的最大点数简单题解
    SpringBoot 学集 (第六章) Docker
    Linux 学记 (第三章)
    Linux 学记 (第二章)
    Linux 学记 (第一章)
    SpringBoot 学集 (第五章) Web开发续
    SpringBoot 学集 (第四章)Web开发
    SpringBoot 学集 (第三章) 日志框架
    SpringBoot 学集 (第二章) 配置文件
    SpringBoot 学集 (第一章)
  • 原文地址:https://www.cnblogs.com/Lyush/p/2124327.html
Copyright © 2011-2022 走看看