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)
posted @ 2022-09-05 10:54  L3067545513  阅读(29)  评论(0编辑  收藏  举报