[BOJ][C++] λ°±μ€ 6064λ²: μΉ΄μ λ¬λ ₯
μ΅κ·Όμ ICPC νμ¬λλ λ¨μλ©λ¦¬μΉ΄μ μμΉ΄ μ κ΅μ΄ λλΌμ΄ λ¬Έλͺ μ μ§λ μΉ΄μ μ κ΅μ ν λλ‘ νμ¬ μΈμμ‘λ€λ μ¬μ€μ λ°κ²¬νλ€. μΉ΄μ μ κ΅μ λ°±μ±λ€μ νΉμ΄ν λ¬λ ₯μ μ¬μ©ν κ²μΌλ‘ μλ €μ Έ μλ€. κ·Έλ€μ Mκ³Ό Nλ³΄λ€ μκ±°λ κ°μ λ κ°μ μμ°μ x, yλ₯Ό κ°μ§κ³ κ° λ λλ₯Ό <x:y>μ κ°μ νμμΌλ‘ νννμλ€. κ·Έλ€μ μ΄ μΈμμ μμ΄μ ν΄λΉνλ 첫 λ²μ§Έ ν΄λ₯Ό <1:1>λ‘ νννκ³ , λ λ²μ§Έ ν΄λ₯Ό <2:2>λ‘ νννμλ€. <x:y>μ λ€μ ν΄λ₯Ό ννν κ²μ <x':y'>μ΄λΌκ³ νμ. λ§μΌ x < M μ΄λ©΄ x' = x + 1μ΄κ³ , κ·Έλ μ§ μμΌλ©΄ x' = 1μ΄λ€. κ°μ λ°©μμΌλ‘ λ§μΌ y < Nμ΄λ©΄ y' = y + 1μ΄κ³ , κ·Έλ μ§ μμΌλ©΄ y' = 1μ΄λ€. <M:N>μ κ·Έλ€ λ¬λ ₯μ λ§μ§λ§ ν΄λ‘μ, μ΄ ν΄μ μΈμμ μ’ λ§μ΄ λλνλ€λ μμΈμ΄ μ ν΄ μ¨λ€.
μλ₯Ό λ€μ΄, M = 10 μ΄κ³ N = 12λΌκ³ νμ. 첫 λ²μ§Έ ν΄λ <1:1>λ‘ ννλκ³ , 11λ²μ§Έ ν΄λ <1:11>λ‘ ννλλ€. <3:1>μ 13λ²μ§Έ ν΄λ₯Ό λνλ΄κ³ , <10:12>λ λ§μ§λ§μΈ 60λ²μ§Έ ν΄λ₯Ό λνλΈλ€.
λ€ κ°μ μ μ M, N, xμ yκ° μ£Όμ΄μ§ λ, <M:N>μ΄ μΉ΄μ λ¬λ ₯μ λ§μ§λ§ ν΄λΌκ³ νλ©΄ <x:y>λ λͺ λ²μ§Έ ν΄λ₯Ό λνλ΄λμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯
μ λ ₯ λ°μ΄ν°λ νμ€ μ λ ₯μ μ¬μ©νλ€. μ λ ₯μ Tκ°μ ν μ€νΈ λ°μ΄ν°λ‘ ꡬμ±λλ€. μ λ ₯μ 첫 λ²μ§Έ μ€μλ μ λ ₯ λ°μ΄ν°μ μλ₯Ό λνλ΄λ μ μ Tκ° μ£Όμ΄μ§λ€. κ° ν μ€νΈ λ°μ΄ν°λ ν μ€λ‘ ꡬμ±λλ€. κ° μ€μλ λ€ κ°μ μ μ M, N, xμ yκ° μ£Όμ΄μ§λ€. (1 ≤ M, N ≤ 40,000, 1 ≤ x ≤ M, 1 ≤ y ≤ N) μ¬κΈ°μ <M:N>μ μΉ΄μ λ¬λ ₯μ λ§μ§λ§ ν΄λ₯Ό λνλΈλ€.
μΆλ ₯
μΆλ ₯μ νμ€ μΆλ ₯μ μ¬μ©νλ€. κ° ν μ€νΈ λ°μ΄ν°μ λν΄, μ μ kλ₯Ό ν μ€μ μΆλ ₯νλ€. μ¬κΈ°μ kλ <x:y>κ° kλ²μ§Έ ν΄λ₯Ό λνλ΄λ κ²μ μλ―Ένλ€. λ§μΌ <x:y>μ μν΄ ννλλ ν΄κ° μλ€λ©΄, μ¦, <x:y>κ° μ ν¨νμ§ μμ ννμ΄λ©΄, -1μ μΆλ ₯νλ€.
νμ΄
// νμ΄ : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int GCD(int a, int b) {
if(a==0) {
return b;
}
return GCD(b%a, a);
}
int LCM(int a, int b) {
return (a*b)/GCD(a,b);
}
int solution(int m, int n, int x, int y) {
for(int i=x; i<=LCM(m,n); i+=m) {
int tmp = i % n;
if(tmp==0) {
tmp = n;
}
if(tmp==y) {
return i;
}
}
return -1;
}
int main() {
int t, m,n,x,y;
cin >> t;
while(t--) {
cin >> m >> n >> x >> y;
cout << solution(m, n, x, y) << "\n";
}
return 0;
}
μνμ°©μ€
λ Έκ°λ€λ‘ ꡬννλλ μκ°μ΄κ³Όκ° λ΄λ€
// νμ΄ : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int solution(int m, int n, int x, int y) {
int tmpx=0, tmpy=0, ans=0;
while(true) {
tmpx++;
tmpy++;
ans++;
if(tmpx>m) tmpx=1;
if(tmpy>n) tmpy=1;
if(tmpx==x && tmpy==y) {
return ans;
}
if(tmpx==m && tmpy==n) {
return -1;
}
}
}
int main() {
int t, m,n,x,y;
cin >> t;
while(t--) {
cin >> m >> n >> x >> y;
cout << solution(m, n, x, y) << "\n";
}
return 0;
}