Python快速求组合数C(n,m)三种方法整理

您所在的位置:网站首页 c32等于多少怎么算出 Python快速求组合数C(n,m)三种方法整理

Python快速求组合数C(n,m)三种方法整理

2024-07-11 13:34:52| 来源: 网络整理| 查看: 265

百度百科对于组合数的定义是:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。 由于经常遇到一些组合数问题,所以整理一些常见的快速求组合数的方法,附上Python的实现代码。

一、m,n不是特别大的时候:

( n m ) = n ! m ! ∗ ( n − m ) ! \binom {n}{m}=\frac {n!}{m!*(n-m)!} (mn​)=m!∗(n−m)!n!​ 可以直接调用math.factorial求得阶乘,然后算出组合数,如下:

import math n,m = map(int,input().split()) print(math.factorial(n)//(math.factorial(m)*math.factorial(n-m)))

输入:

5 3

输出:

10 二、用定义式递归:

( n m ) = ( n − 1 m − 1 ) + ( n − 1 m ) \binom {n}{m}=\binom {n-1}{m-1}+\binom {n-1}{m} (mn​)=(m−1n−1​)+(mn−1​) 递归出口就在于当n=m或者m=1的时候。

n,m = map(int,input().split()) def rec(n,m): if m == n: return 1 elif m == 1: return n else: return rec(n-1,m-1)+rec(n-1,m) print(rec(n,m))

输入:

10 3

输出:

120 三、逆元+快速幂思想参考大佬

前面的两种方法,在n,m数字很大的时候,运行时间会很长。在介绍第三个方法之前,先来介绍几个概念,不当之处,欢迎指点。

(1)、同余定理

百度百科:同余定理数论中的重要概念。给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系。

5 ≡ 3(mod 2) #5和 3对模2同余 (2)、模的加减乘除运算

取模运算的等价变形适合加法、减法、乘法 ( a + b ) % p = ( a % p + b % p ) % p (a + b) \% p = (a \% p + b \% p) \% p



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭