乘法逆元
kaqiur
从零到一
展开
-
乘法逆元
问题:求解组合数C(n,m),即从n个相同物品中取出m个的方案数,由于结果可能非常大,对结果模10007即可。 方案1: 暴力求解,C(n,m)=n*(n-1)*...*(n-m+1)/m!,n方案2: 打表,C(n,m)=C(n-1,m-1)+C(n-1,m),n方案3: 质因数分解,C(n,m)=n!/(m!*(n-m)!),C(n,m)=p1a1-b1-c1p2a2转载 2015-08-13 20:56:25 · 408 阅读 · 0 评论 -
乘法逆元
定义:满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。为什么要有乘法逆元呢?当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。证:(其实很简单。。。)根据b*k≡1 (mod p)有b*k=p*转载 2015-09-04 14:01:34 · 346 阅读 · 0 评论 -
逆元逆元
#includeusing namespace std;typedef long long INT;const int maxp=1e5+200;INT p[15],c[15];INT fac[maxp],inv[maxp];INT powmod(INT a,INT n,INT mod){//快速幂取模 INT ret=1; while(n){ if(n转载 2015-10-19 21:28:31 · 457 阅读 · 0 评论 -
ssoj1306卡农(canon)(组合数学+乘法逆元)
题目描述众所周知卡农是一种复调音乐的写作技法,小余在听卡农音乐时灵感大发,发明了一种新的音乐谱写规则。他将声音分成n个音阶,并将音乐分成若干个片段。音乐的每个片段都是由1到n个音阶构成的和声,即从n个音阶中挑选若干个音阶同时演奏出来。为了强调与卡农的不同,他规定任意两个片段所包含的音阶集合都不同。同时为了保持音乐的规律性,他还规定在一段音乐中每个音阶被奏响的次数为偶数。现在的问题是:小余想原创 2015-09-04 16:06:19 · 657 阅读 · 0 评论 -
ssoj2431 棋盘路径(乘法逆元+组合数)
题意:n行m列的棋盘,其中有k个点无法行走,求从从(0,0)到(n,m)有多少路径。思路:从(0,0)到(i,j)有C(i+j,j)条路(没有被淹的点),经过(i,j)点的道路数有(C(i+j,j)*C(n-i+m-j,m-j))条,其中要扣去经过被淹点的路。贴代码:#include #include #include #include #include #define ll原创 2015-10-20 20:54:52 · 519 阅读 · 0 评论