蓝桥杯:Python组再也不怕组合数计数

有一类题目是是这样的:要求我们从n个数中选m个,问共有多少种取法。

如果是用C++写的话,要应用到Lucas定理,暴力阶乘会超时。

这里给大家介绍一个Python3.8 math库自带的函数math.comb(n, m) 可以用于解决上述问题

具体用法请参照:Python math.comb() 方法 | 菜鸟教程

可以一并看一下math.perm函数:Python math.perm() 方法 | 菜鸟教程 并注意区分二者的区别。

math.comb(n, m) = C_{n}^{m}

math.perm(n, m) = A_{n}^{m}

我们来看一下蓝桥杯官方是否支持这个函数。

这里选用蓝桥杯练习系统:“组合数取模”这道题,题目链接:“蓝桥杯”练习系统 

Python3代码 

from math import comb

n,m,p = map(int,input().split())
print(comb(n,m) % p)

评测结果  

可以看到蓝桥杯官方是支持这个函数的

注:很多OJ的评测系统的Python版本可能较老,因此不支持这个函数,具体以蓝桥杯官方为准。

猜你喜欢

转载自blog.csdn.net/m0_54689021/article/details/129835314