P3223 (排列组合)
题目大意:略
题目分析:
本题类似于当小球遇上盒子。
-
[\(1\)] : 我们可以假设所有老师均为男生,利用插板法,我们可知两个女生可以放入一个男生两侧,又因为每个人都是不同的,故总方案数为 \(A^m_{n + 3} * A^{n + 2}_{n +2}\)
-
[\(2\)] : 我们再去考虑在上述总方案数中有多少种方案两个老师是相邻的,那么我们可以将两个老师看做成一个整体去计算老师相邻的方案数。对于这种情况的总方案数为 \(A^2_2 * A^m_{n + 2} * A^{n + 1}_{n + 1}\)
代码实现:
由于答案过大,以及笔者太懒了,所以用的 \(python 3\) 写的
点击查看代码
import math
ans=0
n,m=map(int,input().split())
def f(x):
return math.factorial(x)
def A(x,y):
return f(x)//f(x-y)
if(n+3>=m):
ans+= A(n+3,m)*A(n+2,n+2)
if(n+2>=m):
ans-=2*A(n+2,m)*A(n+1,n+1);
print(ans)