要求(a / b) mod p的值,但 a 很大,無法直接求得a / b的值時,就要用到乘法逆元。
b * x ≡ 1 (mod p)
x的最小正整數解k叫做b關於模p的乘法逆元。
(a / b) mod p = (a * k) mod p
證明:k = (n*p + 1) / b
(a * k) mod p = (a * (n*p + 1) / b) mod p = (a / b * (n*p + 1) ) mod p = (a / b * (n*p + 1) mod p ) mod p = (a / b) mod p
b < p 且 b, p互質
簡潔寫法
longlong pow_m(long
long a, int
n)
return
s;}
p為素數,且b和p互質
longlong pow_m(long
long a, int
n)
return
s;}
k = pow_m(b, p - 2) % p
constint mod = 1e9 + 7
;const
int max = 2e5 + 100
;long
long
fac[max];
long
long
inv_fac[max];
void
init()
inv_fac[max - 1] = inv(fac[max - 1
], mod);
for(int i = max - 2; i >= 0; i--)
}long
long c(int m, int
n)
扔硬幣 (逆元 組合數學)
有n枚硬幣,每枚硬幣扔出來是正面和反面的概率各佔50 小明同時扔下了n枚硬幣後,已知至少有m枚硬幣是反面。請問恰好有k枚硬幣是正面的概率是多少。輸入t,代表有t組資料。每組資料輸入乙個數n,m,k,代表有n枚硬幣,丟擲以後至少有m枚是反面的情況下,恰好有k個正面的概率。t 1000,n 1e5,m ...
逆元法求組合數
a b p a p b p a b p a p b p a b p a p b p 但是 a b frac ba p amo dpbm od p frac bmodpa modp 這種時候就要用到逆元 在求組合數時 c nm tbinom mn n m n m frac m n m n p n m ...
計數 (快速冪 逆元 組合數學隔板法)
計數時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 小sun最近對計數問題來了興趣,現在他有乙個問題想問問你 有乙個含有n個數字的序列,每個數的大小是不超過1000的正整數,同時這個序列是個單調不增序列。但是很不幸的...