擴充套件歐幾里得
擴充套件歐幾里得可以求出
a
x
+
b
y
=
g
c
d
(
a
,
b
)
ax+by=gcd(a,b)
ax+by=gcd(a,b)的一組特解
證明:
當
b
=
0
b=0
b=0時,顯然有
x
=
1
,
y
=
0
x=1,y=0
x=1,y=0這一組解,但其實
y
y
y並非只能取零,取任何值都可以。
若
b
≠
0
b\neq 0
b=0,因為
a
x
+
b
y
=
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
%
b
)
=
b
x
+
(
a
%
b
)
y
ax+by=gcd(a, b)=gcd(b, a \%b)=bx+(a \%b)y
ax+by=gcd(a,b)=gcd(b,a%b)=bx+(a%b)y
=
b
x
+
(
a
−
⌊
a
/
b
⌋
×
b
)
×
y
=bx+(a-\lfloor a/b \rfloor \times b)\times y
=bx+(a−⌊a/b⌋×b)×y
=
b
x
+
a
y
−
⌊
a
/
b
⌋
b
y
=bx+ay-\lfloor a/b \rfloor by
=bx+ay−⌊a/b⌋by
=
a
y
+
b
(
x
−
⌊
a
/
b
⌋
y
)
=ay+b(x- \lfloor a/b \rfloor y)
=ay+b(x−⌊a/b⌋y)
即存在另一組解
y
y
y和
x
−
⌊
a
/
b
⌋
y
x- \lfloor a/b \rfloor y
x−⌊a/b⌋y
令
x
′
=
y
,
y
′
=
x
−
⌊
a
/
b
⌋
y
x^{'}=y,y^{'}=x- \lfloor a/b \rfloor y
x′=y,y′=x−⌊a/b⌋y,則有
a
x
′
+
b
y
′
=
g
c
d
(
a
,
b
)
ax^{'}+by^{'}=gcd(a,b)
ax′+by′=gcd(a,b)
即
x
′
x^{'}
x′和
y
′
y^{'}
y′是一組解
證畢
因此當 b ≠ 0 b \neq 0 b=0時,我們可以遞迴呼叫歐幾里得演算法,每次回溯的時候令 x = y , y = x − ⌊ a / b ⌋ y x=y,y=x- \lfloor a/b \rfloor y x=y,y=x−⌊a/b⌋y,最後就會得到一組可行解,這個過程有兩種表示方法。
// 1
ll exgcd(ll a, ll b, ll& x, ll& y){
if (b == 0){
x = 1;
y = 0;//等於多少無所謂
return a;
}
ll t = exgcd(b, a % b, y, x);
y -= a / b * x;
return t;
}
// 2
ll exgcd(ll a, ll b, ll& x, ll& y){
if (b == 0){
x = 1;
y = -534;
return a;
}
ll t = exgcd(b, a % b, x, y);
ll z = x;
x = y;
y = z - (a / b) * y;
return t;
}
相關文章
- 歐幾里得演算法與擴充套件歐幾里得演算法演算法套件
- 淺談擴充套件歐幾里得演算法套件演算法
- POJ1061擴充套件歐幾里得定理套件
- 擴充套件歐幾里得的幾個定理以及證明套件
- 擴充套件歐幾里得演算法公式快速推導套件演算法公式
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- hdu Yet another end of the world(擴充套件歐幾里得定理推論)套件
- 51nod 1352 集合計數(擴充套件歐幾里得)套件
- 數論學習筆記 (4):擴充套件歐幾里得演算法筆記套件演算法
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 湘潭大學四月月賽C題A+B(擴充套件歐幾里得定理)套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 第六章 數學問題 -------- 6.5 歐幾里得演算法及其擴充套件演算法套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 第六章 數學問題 -------- 6.7【擴充套件歐幾里得】一步之遙套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- 分類擴充套件套件
- 擴充套件表示式套件
- 新增php擴充套件PHP套件
- swift擴充套件ExtensionsSwift套件
- iOS 通知擴充套件iOS套件
- 可擴充套件性套件
- 19-擴充套件套件
- Nmap 擴充套件(四)套件