hdu 2049 考新郎

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

 

和之前那道题一样,是错排,但是要乘上排列数。

 

选对的人有C(N,M)个组合,将它们排除掉,剩下的人就是错排了

 

 1 #include<iostream>
 2 #include<cmath>
 3 #include<iomanip>
 4 using namespace std;
 5 
 6 long long fact(int n)
 7 {
 8           long long sum =1;
 9           while(n>0)
10                     sum*=n--;
11           return sum;
12 }
13 
14 
15 int main()
16 {
17           int n;
18           cin>>n;
19           while(n--)
20           {
21                     int m,n;
22                     cin>>m>>n;
23                     long long a[21];
24                     a[1] = 0;
25                     a[2] = 1;
26                     for(int i = 3;i<=n;i++)
27                     {
28                               a[i] = (i-1)*(a[i-1]+a[i-2]);
29                     }
30                     cout<<a[n]*fact(m)/(fact(n)*fact(m-n))<<endl;
31           }
32 }

 

posted @ 2015-11-12 23:05  qlky  阅读(183)  评论(0编辑  收藏  举报