Unknown Treasure
题意
给你n,m,和K个素数$p_1,p_2 …… p_k$,求$C_n^mmod\prod{p_i}$。
n,m<=1e18。
思路
计算组合数用Lucas即可,每次取模Pi,然后由于最终是要模$\prod{p_i}$,所以用中国剩余定理。
令 $tot = \prod{p_i} $,$X=C_n^mmod\prod{p_i}$,$K=\lfloor C_n^m/\prod{p_i}\rfloor$
有:$C_n^m=K*tot+X$
两边同对$pi$取模,
$$
X % p_1 = C_n^m % p_1 = Lucas(n,m,p_1)
$$
$$
X % p_2 = C_n^m % p_2 = Lucas(n,m,p_2)
$$
$$
…
$$
$$
X % p_n = C_n^m % p_n = Lucas(n,m,p_n)
$$
$$
X % p_1 = C_n^m % p_1 = Lucas(n,m,p_1)
$$
利用中国剩余定理求出X即可。
因为做乘法过程中可能会超long long ,所以我们要用快速乘法去处理,方便取模
看!代码
1 |
|