[模板]欧几里得算法/扩展欧几里得
生活随笔
收集整理的這篇文章主要介紹了
[模板]欧几里得算法/扩展欧几里得
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最大公因數(shù)(歐幾里得算法)
$gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b)
$gcd(0,b)=b$
1 inline int gcd(int a,int b){ 2 return a==0?b:gcd(b%a,a); 3 }擴(kuò)展歐幾里得
尋找$ax+by=gcd(a,b)$的一組解x,y(一定存在整數(shù)解)
$ax+by=gcd(a,b)=gcd(b\%a,a)=(b-\lfloor\frac{b}{a}\rfloor*a)x'+ay'$
所以有一組解$x=y'-\lfloor\frac{b}{a}\rfloor*x',y=x'$
用此法可解同余方程$ax=b(\mod c)$,只要把$ax+cy=b$兩邊同除$b/gcd(a,c)$即可,所以有解的條件是$gcd(a,c)|b$
1 inline ll exgcd(ll a,ll b,ll &x,ll &y){ 2 if(!a){ 3 y=1;return b; 4 }else{ 5 ll t=exgcd(b%a,a,x,y); 6 y-=(b/a)*x;swap(x,y); 7 return t; 8 } 9 }?
轉(zhuǎn)載于:https://www.cnblogs.com/Ressed/p/10089108.html
總結(jié)
以上是生活随笔為你收集整理的[模板]欧几里得算法/扩展欧几里得的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你不知道的Node.js性能优化,读了之
- 下一篇: Web前端单词大全