假设一共有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 }