组合数取模就是求C(n,m)%p的值,当然根据n,m和p的取值范围不同,采取的方法也不一样。
1.P是素数:
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
typedef long long LL;
LL n,m,p;
LL quick_mod(LL a, LL b)
{
LL ans = 1;
a %= p;
while(b)
{
if(b & 1)
{
ans = ans * a % p;
b--;
}
b >>= 1;
a = a * a % p;
}
return ans;
}
LL C(LL n, LL m)
{
if(m > n) return 0;
LL ans = 1;
for(int i=1; i<=m; i++)
{
LL a

本文介绍了如何在计算机程序中计算组合数取模C(n,m)%p的值。当p为素数时,使用Lucas定理和快速幂运算;当p为合数时,通过分解质因数并利用中国剩余定理的思路。文章提供了两种情况下的C++代码实现。"
138236334,22823382,SpringBoot+MyBatis-Plus整合多数据源实战,"['Spring Boot', '后端开发', 'Java', '数据库']
最低0.47元/天 解锁文章
1072

被折叠的 条评论
为什么被折叠?



