【BZOJ2729】【HNOI2012】排队 组合数 数论 Python高精度

6 篇文章 0 订阅
3 篇文章 0 订阅

转载请注明出处谢谢:http://blog.csdn.net/vmurder/article/details/42964151

题解:

代码里面有注释。

注意:

Python2中的中文字符即使注释了,也会CE(当然,因为Python是直接运行,不编译,所以显示WA)

呃,而本地的Python3就不管它了。。


所以我的代码需要删掉中文注释再交233。


代码:

# n!(A(n+1,2)*A(n+3,m)+2*(n+1)*A(n+2,m-1)*m)

# 首先男生随便放 这样是n!种摆法。
# 然后再加上俩老师,就有了n+3个放女生的位置,
# 	也就是女生有A(n+3,m)种放法,但是老师的位置则应该是A(n+1,2)
# 然后若两老师扔到男生中时重复了,那么就需要中间插个女生
# 	也就是女生有A(n+2,m-1)种插法,而老师则是(n+1)种方法,
# 		注意此时需要枚举是哪个女生被放到老师中间,这有m种情况。
#			呃,两个老师也是不同的,所以此时需要再*2
# 这两种老师的放法是不重复且包括所有情况的
# 	也就是我们再如上述处理两种老师放法时女生的排列数
# 		就可以出解且包括所有情况。
# 	By YGY(id:18357)

def mul(x, y):
	re = 1
	for i in range (x, y + 1):
		re = re * i
	return re

n, m = raw_input().split()
n = int(n); m = int(m)
#print(mul(1,n)*((n+1)*n*mul(n+3-m+1,n+3)+2*(n+1)*m*mul(n+2-m+2,n+2)))
print(mul(1,n+1)*mul(n+4-m,n+2)*(n*(n+3)+2*m))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值