萌新求助:一个关于组合数取模求法的板子
  • 板块学术版
  • 楼主zhangtang007
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/27 16:33
  • 上次更新2023/11/3 00:52:48
查看原帖
萌新求助:一个关于组合数取模求法的板子
380653
zhangtang007楼主2023/8/27 16:33

之前在很多地方看到过不同的组合数取模板子

今天在做一道题的时候看到这个我没见过的、看不懂的板子,有没有大佬能讲解一下原理

LL exp_mod(LL a, LL b, LL p) {

	LL res = 1;
	while (b != 0) {
		if (b & 1)
			res = (res * a) % p;
		a = (a * a) % p;
		b >>= 1;
	}
	return res;
}

LL Comb(LL a, LL b, LL p) {
	//求组合数C(a,b)%p
	if (a < b)
		return 0;
	if (a == b)
		return 1;
	if (b > a - b)
		b = a - b;

	LL ans = 1, ca = 1, cb = 1;
	for (LL i = 0; i < b; ++i) {
		ca = (ca * (a - i)) % p;
		cb = (cb * (b - i)) % p;
	}
	ans = (ca * exp_mod(cb, p - 2, p)) % p;
	return ans;
}

2023/8/27 16:33
加载中...