逆元:
當求解公式:(a/b)%m 時,由於b>a時,a/b=0,所以需變除法為乘法:
設c是b的逆元,則有b*c≡1(mod m);
則(a/b)%m = (a/b)1%m = (a/b)bc%m = ac(mod m);
即a/b的模等於a*b的逆元的模;
1.費馬小定理
在是素數的情況下,對任意整數都有。
如果無法被整除,則有。
可以在為素數的情況下求出乙個數的逆元,,即為逆元。
比如求c(n,m) = n! /(m!(n-m)!) mod 10^9+7
由於除數可能大於被除數,所有需要將除法轉換成乘法, 採用逆元的方式。
由於模數為素數, 可以用費馬小定理。
n!(m!*(n-m!))^ (10^9+7 - 2)
也就是將x/y mod m 轉換成了 x * y ^ (m -2 ) mod m
2.擴充套件歐幾里得
3.通用法
#a
b\frac
bamod m = a mod (b*mod) /b
LetCode PlusOne的三種解法
原題目 given a number represented as an array of digits,plus one to the number.題目的意思是乙個用陣列表示的數字,在加一後仍然用這個陣列表示,加一後位數可能會增加,故最好用vector表示.class plusone priva...
回文數字的三種解法
要求 在不使用額外空間的前提下,判斷乙個數字是否是回文數字,例如12321是回文,1234521不是回文 回文數字的最大特徵就是最後乙個數字和第乙個數字相等,由此可以得出兩個特徵 1 回文數字反轉之後,跟反轉之前的值相等 2 回文數字首尾是對稱的 基於上述兩個特徵,可以衍生下面三個演算法 解法一 將...
子集問題的三種解法
1.按目標向量列舉 列舉目標向量每個分量上的可取值 1 全子集 def dfs x,t,s,start print x t for i in xrange start,len s x t s i dfs x,t 1,s,i 1 2 特定大小子集 def dfs x,t,s,start if t le...