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 }
原文地址:https://www.cnblogs.com/qlky/p/4960581.html