-
μ ν΄λ¦¬λ μκ³ λ¦¬μ¦ - λ μμ μ΅λ곡μ½μλ?π€¨ALicademy π©π«π¨π«/μκ³ λ¦¬μ¦ 2021. 7. 4. 23:55
πIntro
μΉλ§₯μ κ³ μ₯μΈ λ§₯μΉλ§μμμλ 맀λ μΉλ§₯μΆμ ππΊλ₯Ό μ½λλ€. μ¬ν΄λ μΆμ λ₯Ό μν΄ μΉν¨ 4,500λ§λ¦¬πμ λ§₯μ£Ό 7,500μπΊμ μ€λΉνμ΅λλ€. μ΄κ²λ€μ μ΅λν λ§μ μ¬λλ€μκ² λ¨κΉμμ΄ λκ°μ΄ λλμ΄ μ£Όλ €κ³ ν λ, 1οΈβ£ μ΅λ λͺ λͺ μκ² λλμ΄ μ€ μ μμΌλ©° 2οΈβ£ ν μ¬λ λΉ μΉν¨ λͺ λ§λ¦¬μ λ§₯μ£Ό λͺ μμ λ°μ μ μμκΉμ?
λ¬Έμ λ₯Ό λͺ¨λ λ§μΆμ ¨λμ? μ¬λ¬λΆμ΄ μ΄λ―Έ μκ³ κ³μλ―μ΄ 1οΈβ£λ² λ¬Έμ μ λ΅μ 4,500κ³Ό 7,500μ 'μ΅λ 곡μ½μ(Greatest Common Divisor)'μΈ 150λͺ μ λλ€. λν 2οΈβ£λ² λ¬Έμ μ λ΅μ μΉν¨ 4,500λ§λ¦¬μ λ§₯μ£Ό 7,500μμ μ΅λ 곡μ½μμΈ 150μΌλ‘ λλ 3λ§λ¦¬μ 5μμ λλ€. (ν μ¬λλΉ μΉν¨ μΈ λ§λ¦¬πππμ λ§₯μ£Ό 5μπΊπΊπΊπΊπΊμ΄λΌλ... μ λ§ μ’μ μΆμ λ€μπ)
κ·Έλ λ€λ©΄ λ§μ½ nλ ν μΉλ§₯μΆμ ππΊκ° μ μΈκ³μ μΌλ‘ λλ°μ΄ λλ©΄μ μΉν¨ 9,876,543λ§λ¦¬πμ λ§₯μ£Ό 3,456,789μπΊλ₯Ό μ€λΉνλ€κ³ ν λ, 1οΈβ£λ² λ¬Έμ μ 2οΈβ£λ² λ¬Έμ μ λ΅μ κ°κ° 무μμΌκΉμ?
μλ§ λ°λ‘ λ΅μ ꡬνκΈ΄ μ΄λ €μ°μ€ κ² κ°μλ°μ. μ»΄ν¨ν°κ° λμ ꡬν΄λ³΄κ² νλ κ² μ΄λ¨κΉμ?
πμ΅λ 곡μ½μ ꡬνκΈ°
λ μ μ $a,\ b\ (a \gt b)$μ μ΅λ 곡μ½μλ₯Ό $\gcd(a, b)$λΌκ³ ν©μλ€. $\gcd(a, b)$λ₯Ό μ»΄ν¨ν°λ‘ μ΄λ»κ² ꡬν μ μμκΉμ?
1. Brute-force π₯
κ°μ₯ λ¨Όμ 무μνκ² κ΅¬νλ λ°©λ²μ΄ μμ΅λλ€. $\gcd(a, b)$λ 1λΆν° $b$ μ€ $a,\ b$ λͺ¨λμ λλμ΄ λ¨μ΄μ§λ κ°μ₯ ν° μμ λλ€. λ°λΌμ 1λΆν° $b$κΉμ§ μ°¨λ‘λ‘ μ¦κ°νλ©° $a,\ b$ λͺ¨λμ λλμ΄ λ¨μ΄μ§λμ§ νμΈνλ©΄ λ©λλ€.
μ΄ μκ³ λ¦¬μ¦μ ꡬνν μ½λλ μλμ κ°κ³ β°μκ° λ³΅μ‘λλ $O(b)$μ λλ€.
2. 곡μ½μμ μ±μ§ μ΄μ©νκΈ°
μ΄λ²μλ μ°μνκ² μνπ«μ μ΄μ©ν΄λ³ΌκΉμ?
곡μ½μμ μ±μ§ μ€ νλλ 'λ μ μ $a,\ b\ (a \gt b)$μ 곡μ½μμ μ§ν©μ $a - b$μ $b$μ 곡μ½μ μ§ν©κ³Ό κ°λ€'λ κ²μ λλ€. μ΄ μ±μ§μ μλμ κ°μ΄ κ°λ¨νκ² μ¦λͺ ν μ μμ΅λλ€.
$pf.\\ a,\ bμ 곡μ½μ\ gκ°\ μλ€κ³ \ νμ.\\κ·Έλ λ€λ©΄\ a = a'g, \ b = b'gλΌκ³ \ ν \ μ\ μλ€.\\\ \\μ΄λ,\ a-b = (a'-b')g\ μ΄λ―λ‘\\ a,\ bμ\ 곡μ½μμ\ μ§ν©μ\ a - bμ\ bμ\ 곡μ½μμ\ μ§ν©κ³Ό\ κ°λ€.$
μ΄ μ±μ§μ μ΄μ©νλ©΄ μλμ κ°μ μ½λλ₯Ό ꡬνν μ μμ΅λλ€.
μ΄λ β°μκ° λ³΅μ‘λλ $n = a + b$λΌκ³ ν λ, $O(n)$μ λλ€. μλνλ©΄ $\gcd(a, b)$λ μ΅λ $a+b$λ² λ°λ³΅νκΈ° λλ¬ΈμΈλ° λ€μκ³Ό κ°μ΄ μ¦λͺ ν μ μμ΅λλ€. κ°λ¨νκ²λ μ΅μ μ κ²½μ° μ¦, $gcd(a, 1)$μΌ λ ν¨μκ° λͺ λ² μ€νλλμ§ μΈλ λ°©λ²λ μμ΅λλ€.
$pf.\\λ \ μ μ \ a,\ b(a\gt b)μ\ λνμ¬\\\gcd(a, b) = \gcd(a-b, b) = \gcd(a', b')λΌκ³ \ νμ.\\\ \\μ΄λ\ λ€μμ\ κ°μ\ κ΄κ³κ°\ μ±λ¦½νλ€.\\\begin{cases} a' = a-b\\ b' = b \end{cases}\\\ \\κ·Έλ¦¬κ³ \ a'+b' = a \lt a+b\ μ΄λ€.\\λ°λΌμ\ \gcd(a, b)λ\ μ΅λ\ a+bλ²\ λ°λ³΅νλ€.$
μ°μνκ² μνμ μ΄μ©νλλ° κ²°κ³Όλ κ·Έλ κ² λ§μ‘±μ€λ½μ§λ μλ€μ...π
κ·Έλ λ€λ©΄ 곡μ½μμ λ€λ₯Έ μ±μ§μ μ΄μ©ν΄λ³΄λ©΄ μ΄λ¨κΉμ?
π’μ ν΄λ¦¬λ μκ³ λ¦¬μ¦
μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ μμ¬μ κ°μ₯ μ€λλ μκ³ λ¦¬μ¦μΌλ‘ μ λͺ νκ³ μλμ κ°μ μ±μ§μ μ΄μ©νμ¬ λ μμ μ΅λ 곡μ½μλ₯Ό ꡬν©λλ€.
$λ\ μ μ\ a,\ b\ (a\gt b)μ\ λνμ¬\ \gcd(a,\ b) = \gcd(b,\ a \mod b)μ΄λ€.$
μ΄ μ±μ§μ λ€μκ³Ό κ°μ΄ κ°λ¨νκ² μ¦λͺ ν μ μμ΅λλ€.
$pf.\\r = a\mod b,\ a = b \times t + r\ (t \in Z)λΌκ³ \ νμ.\\\ \\Case\ 1.\ d = \gcd(a, b)μΌλ,\ d \mid (b \times t + r)μ΄κ³ \ d \mid bμ΄λ€.\\λ°λΌμ,\ d \mid rμ΄λ€.\ κ·Έλ¬λ―λ‘,\ \gcd(a, b) = \gcd(b, r)μ΄λ€.\\\ \\Case\ 2.\ c = \gcd(b, r)μΌλ,\ c \mid bμ΄κ³ \ c \mid rμ΄λ€.\\λ°λΌμ,\ c \mid aμ΄λ€.\ κ·Έλ¬λ―λ‘,\ \gcd(b, r) = \gcd(a, b)μ΄λ€.\\\ \\λ°λΌμ, \gcd(a, b) = \gcd(b, r)μ΄λ€.$
μ΄ μ±μ§μ μ΄μ©νλ©΄ μλμ κ°μ μ½λλ‘ κ΅¬νν μ μμ΅λλ€.
ν ... κ·Όλ° κ³Όμ° μ΄ λ°©λ²μ΄ λ€λ₯Έ λ°©λ²λ€ λ³΄λ€ λΉ λ₯ΌκΉμ? π€
β°λ³΅μ‘λ λΆμ
μκ³ λ¦¬μ¦μ 볡μ‘λλ₯Ό λΆμνλ μ¬λ¬ λ°©λ²λ€μ΄ μμ΅λλ€. κ·Έ μ€ κ°λ¨νκ² λ§€ μ€νλ§λ€ μ€μ΄λ μλ£μ ν¬κΈ°λ‘ ν΅ν΄ 볡μ‘λλ₯Ό λΆμνλ λ°©λ²μ΄ μμ΅λλ€. κ·ΈλΌ ν λ² λΆμν΄λ³ΌκΉμ?
μ ν΄λ¦¬λ μκ³ λ¦¬μ¦μ λ μ μ $a,\ b\ (a \gt b)$μ λνμ¬ $b$κ° 0μ΄ λ λκΉμ§ λ°λ³΅μ μΌλ‘ ν¨μλ₯Ό νΈμΆν©λλ€.
κ·ΈλΌ μλμ κ°μ΄ κ²½μ°λ₯Ό λλ μ μκ°ν΄λ³΄λ 건 μ΄λ¨κΉμ?π‘
$\gcd(a, b) = \gcd(a', b') = \gcd(b, a \mod b)λΌκ³ \ ν \ λ\\\ \\Case\ 1\ :\ b\ (=a') \gt \frac{a}{2}\\\ \\a \mod b(=b') = a - b \lt \frac{a}{2}\\\ \\Case\ 2\ :\ b(=a') \le \frac{a}{2}\\\ \\a \mod b(=b') \lt b \le \frac{a}{2}$
κ²½μ°λ₯Ό λλ 보λ $a \mod b \lt \frac{a}{2}$μΈ κ²μ΄ λΆλͺ ν΄μ‘μ΅λλ€. κ·Έλ¬λ―λ‘ λ§€ μ€νλ§λ€ μλ£μ ν¬κΈ°κ° μ λ° μ΄μ μ€μ΄λ λ€λ μ¬μ€μ μ μ μμ΅λλ€. λ°λΌμ, β°μκ° λ³΅μ‘λλ $O(\log(\min(a, b))$μ λλ€.
Let's do PSπ
κ·ΈλΌ μ€λ 곡λΆν λ΄μ©λ€λ‘ λ¬Έμ λ₯Ό ν΄κ²°ν΄λ³ΌκΉμ?
μ€λ ν΄κ²°ν λ¬Έμ λ BOJ 2609 - μ΅λ곡μ½μμ μ΅μ곡배μμ λλ€.
λ¨Όμ μ€μ€λ‘ ν΄κ²°ν΄λ³΄μκ³ λμμ΄ νμνμλ©΄ μλ μ½λλ₯Ό μ°Έκ³ νμΈμ.
Further Thinkingπ§
$\gcd(a, b) = d$ λΌκ³ ν λ $d = ax + dy\ (x, y \in Z)$λ‘ μ μν μ μμ΅λλ€.
μλνλ©΄ $d$λ $a, b$μ μ΅λ 곡μ½μμ΄κΈ° λλ¬Έμ λλ€. κ·Έλ λ€λ©΄ μ΄λ $x$μ $y$μ κ°μ μ΄λ»κ² μ μ μμκΉμ?
κ·Έλ¦¬κ³ μ΄κ±Έ λλ체 μ΄λμ μμ©ν μ μμκΉμ?
κ·Έκ²λ€μ λ€μ κ°μμμ μμλ³΄κ² μ΅λλ€. π¨π«π¨π«π¨π«
πμ°Έκ³
https://ko.wikipedia.org/wiki/μ ν΄λ¦¬λ_νΈμ λ²
https://codility.com/media/train/10-Gcd.pdf
'ALicademy π©βπ«π¨βπ« > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
π² Segment Tree 2 - λ λΉ λ₯Έ updateλ₯Ό μν Lazy Propagation! (0) 2020.09.01 π² Segment Tree 1 - Segment Treeλ? (0) 2020.08.31