crt在演算法競賽中算是乙個比較重要的模組,他的基本形式如下:
給出n個式子: x≡
a1mo
dp1 x≡a
1mod
p1
x≡a2mod
p2x ≡a
2mod
p2
x≡a3mod
p3x ≡a
3mod
p3
……
x≡an mo
d pn
' role="presentation">x≡a
nmod
pnx≡
anmo
dpn求x的最小正整數解。(pi互質)
那麼如何求解x呢?
我們先考慮求解x的乙個可行解x0
x
0因為同餘的可加性,我們可以把x0
x
0拆成x
0=x1
+x2+
x3+…
+xn x0=
x1+x
2+x3
+…+x
n,每個xi x
i對應的式子為: xi
≡aim
odpi
x i≡
aimo
dp
i對於不等於i的值j xi
≡0mo
dpj xi≡
0mod
pj
再由於同餘的可乘性,我們可以把x拆成x=
a1x1
+a2x
2+…+
anxn
x =a
1x1+
a2x2
+…+a
nx
n,把式子改為: xi
≡1mo
dpi xi≡
1mod
pi
然後我們觀察每個xi
x
i:對於每個xi
x
i和不等於i的所有j,由於 xi
≡0mo
dpj xi≡
0mod
pj
設所有p的乘積為p,那麼xi
x
i一定是ppi
p pi
的倍數,那麼我們可以把xi
x
i改為 g(p
pi)≡
1mod
pig (p
pi)≡
1mod
pi
,通過這個式子可以看出g其實是pp
i pp
i在模p
i pi
意義下的逆元,xi
x
i就可以求出來,x0
x
0也就求出來了,x0
x
0的公式為: x0
=a1∗
p1∗g
1+a2
∗p2∗
g2+⋯
+an∗
pn∗g
n x0=
a1∗p
1∗g1
+a2∗
p2∗g
2+⋯+
an∗p
n∗gn
其中pi
p i為p
pip pi
,gi gi為p
i pi
在模pi p
i意義下的逆元
x的所有解為x=
x0+t
p(t∈
z)x =x
0+tp
(t∈z
)需要注意的是這種方法只能用於p均為質數的情況下,如果p不是質數的話需要用其他方法,這不是crt的內容,這裡就不講了,有興趣的朋友可以去看看我前面寫的一篇基礎數論入門,那裡面有所提及。
來道題練練手?
bzoj 1951-古代豬文
題目大意:
給出g,n,求g∑
d|nc
dng ∑d
|ncn
d%999911659
solution:
解決這個問題我們需要求出∑d
|ncd
n ∑d|
ncnd
,那麼不妨設x=
∑d|n
cdn x=∑
d|nc
nd
通過尤拉定理我們知道gp
−1≡1
modp
g p−
1≡1m
od
p所以說gx
≡gx%
(p−1
)mod
p gx≡
gx%(
p−1)
modp
我們只需要求出x%
(p−1
) x%(
p−1)
即可,由於p-1不是乙個質數,但是它可以分解成多個質數
(999911658=2
∗3∗4679
∗35617
999911658=2
∗3
∗4679
∗35617
) 那麼這道題就可以用crt了。
**:
//999911658=2*3*4679*35617
#include
#include
#include
using namespace std;
int n,g;
int md[4]=;
int tot=999911658;
int ni[4][40000];
int mi[4][40000];
int nn=0;
int f[4];
int fast_pow(int x,int a,int
mod)
return ans;
}int c(int n,int m,int
mod)
int main()
for (int j=0;j<4;j++)
ni[j][0]=1;
}//coutfor (int i=1;i<=qn;i++)}}
int ans=0;
for (int j=0;j<4;j++)
printf("%d",fast_pow(g,ans,tot+1));
}
CRT 中國剩餘定理 膜法
容易發現是楊輝三角形,第i個數的貢獻為c n 1,i 1 但是由於mod數不是質數,所以考慮用crt來做。先拆mod數,然後在求組合數的過程中將每個數拆成a pi ci的形式,非常感謝dmsdalao對我中國剩餘定理的指導。關於crt詳見 include include include define...
中國剩餘定理(筆記)
什麼是中國剩餘定理呢?先看一 間的傳說故事 韓信點兵 楚漢相爭,一次戰役中,漢軍原有1500人死傷四五百人。他命令士兵3人一排,結果多出2名 命令5人一排,多出3名 命令7人一排,多出2名。韓信便馬上說出我軍有1073名勇士。對於這個問題,可將其描述為 乙個數學問題,就是 乙個數除以3餘2,除以5餘...
中國剩餘定理學習筆記
上次jt暑假講的時候我數學太弱並沒有聽懂qwq。假設有方程組 mi 兩兩互質 x ai m odmi 令 m i 1nmi wi mmi 易知有 gc d wi mi 1下一步求出pi 使得 wi pi 1 mo dmi 這個時候x的乙個解可以表示為 x i 1 nwi pi a i 為什麼x可行呢...