λ¬Έμ
μ΄μ§νΈ λλμ μ νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
p/qλ₯Ό λνλ΄λ λ μ μ p, qκ° μ¬μ΄μ 곡백μ νλ λκ³ μ£Όμ΄μ§λ€.
pλ 1 μ΄μ 1,000 μ΄ν, qλ p+1 μ΄μ 2,000 μ΄νμΈ μ μ
μΆλ ₯
μμ μκ°μ λ°°μ΄ μ΄μ§νΈ λλμ μ κ²°κ³Όλ‘ λͺ κ°μ λΆμκ° λμ€λμ§ μΆλ ₯νλ€. μλ₯Ό λ€μ΄, 5/6μ 1/2 + 1/3μ΄λ―λ‘ 2κ°μ λΆμκ° νμνλ€.
μμ μ λ ₯ 1
5 6
μμ μΆλ ₯ 1
2
μμ μ λ ₯ 2
19 20
μμ μΆλ ₯ 2
4
μκ³ λ¦¬μ¦ μμ μ 첫 κ³Όμ μλ€.
μ΄μ§νΈ λλμ μ΄λ, μ 리μ p/qκ° μ£Όμ΄μ§λ©΄ λΆμκ° 1μΈ λΆμλ€μ ν©μΌλ‘ p/qλ₯Ό νννλ κ²μ΄λ€.
μ) 5/6 = 1/2 + 1/3 , 3/4 = 1/2 + 1/4
μμ¬μμ΄ κΈ°λ², νν Greedy μκ³ λ¦¬μ¦μ΄λΌκ³ λΆλ₯΄λ κΈ°λ²μ μ¬μ©νμ¬ νμ΄ν μ μλ€.
μμ μκ°μλ λ κ°μ§μ ν΄κ²°λ²μ λ°°μ λ€.
첫λ²μ§Έ λ°©λ²μ΄λ€.
n= 2, 3, ... ν΄λ³΄λ©΄μ, 1/nκ³Ό p/q μ€ μ΄λ μκ° λ ν°μ§ μκ°ν΄λ³΄μ.
1/nμ΄ λ ν¬λ€λ©΄ n:= n+1, μλλ©΄ p/q = p/q - 1/n μΌλ‘ κ³μ λ¬Έμ λ₯Ό νμ. p/qκ° 0μ΄ λλ©΄ μ’ λ£νλ€.
p/q = 5/6μ΄λ©΄ 1/2 < 5/6
5/6 - 1/2 = 2/6 = 1/3
p/q = 1/3μ΄λ©΄ 1/2 > 1/3. 1/3 <= 1/3.
p/q = 1/3 - 1/3 = 0 μΌλ‘ μ’
λ£.
λ¨μν νλμ© λΉκ΅ν΄μ μ°μ°νλ λ°©λ²μ΄λ€.
νμ§λ§ μ λ°©λ²μ λΆλͺ¨μ κ°μ΄ 컀μ§μλ‘ λΉν¨μ¨μ μ΄λ€. λΆλͺ¨κ° μμ£Ό ν° μ«μλΌλ©΄, μκ°λ μμ£Ό μ€λ 걸릴 κ²μ΄λ€.
κ·Έλ λ€λ©΄, λ λ²μ§Έ λ°©λ²μ μ΄ν΄λ³΄μ
μ£Όμ΄μ§ μ p/qμ λν΄μ, μ΄ μμ μμ q/pμ κ°κ±°λ ν° κ°μ₯ μμ μ μ [q/p]λ₯Ό μ°Ύκ³ , 1/[q/p]λ₯Ό p/qμμ λΊλ€.
μ΄ κ³Όμ μ 0μ΄ λ λκΉμ§ λ°λ³΅νλ€.
5/6 μ λν΄μ, [6/5] = 2.
5/6 - 1/2 = 1/3
1/3 μ λν΄μ, [3/1] = 3. 1/3 - 1/3 = 0.
μμλ₯Ό νμ©νλ€λ©΄ ν¨μ¬ λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ μ΄μ§νΈ λλμ μ ν μ μλ€.
λΆλͺ¨λ₯Ό 1μ© μ¦κ°μμΌ μ°μ°νλ λμ , μμλ₯Ό μ¬μ©νμ¬ 1/[q/p]μ λ°λ‘ μ κ·Όν μ μλ€λ μ°¨μ΄κ° μλ€.
μ΄ λλ²μ§Έ λ°©λ²μ μ¬μ©νμ¬ κ³Όμ λ₯Ό ν΄κ²°νμλ€.
#include <iostream>
#include <numeric>
using namespace std;
int main(){
int p, q;
int n = 1;
int cnt = 0;
cin >> p >> q; // p/q
// if(p<1 || p>1000 || q<p || q>2000)
while(p > 0){
cnt++;
while(1){
if(n > q/p) break;
n++;
}
p = p*n - q;
q = q * n;
int tmp = gcd(p, q);
p /= tmp;
q /= tmp;
if(p == 1) { cnt++; break; }
}
cout << cnt;
return 0;
}
κ²°κ³Όλ λ§μ !
'π μ 곡 κ³΅λΆ > μκ³ λ¦¬μ¦ ν΄μ λ° μ€κ³' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] λ¬Έμμ΄ λ€λ£¨κΈ° - λ‘λ§μ«μ(cpp) (0) | 2023.04.11 |
---|---|
[μκ³ λ¦¬μ¦] DP - κ³λ¨ μ€λ₯΄κΈ°(cpp) (0) | 2023.04.11 |
[μκ³ λ¦¬μ¦] μ λ ¬μ μ΅μ μ± (0) | 2023.01.16 |
[μκ³ λ¦¬μ¦] λΉκ΅κΈ°λ° μ λ ¬μ νκ³/λΉκ΅μ κΈ°λ°νμ§ μμ μ λ ¬ (0) | 2023.01.16 |
[μκ³ λ¦¬μ¦] λΉκ΅ κΈ°λ° μ λ ¬ λ¬Έμ (0) | 2023.01.16 |