์ต๊ทผ์ 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;
}
'๐๏ธ ICPC Sinchon > Bruteforce' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 18808๋ฒ: ์คํฐ์ปค ๋ถ์ด๊ธฐ (0) | 2024.09.04 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2309๋ฒ: ์ผ๊ณฑ ๋์์ด (0) | 2023.01.19 |
[BOJ S2][C++] ๋ฐฑ์ค 14620๋ฒ: ๊ฝ๊ธธ (0) | 2022.09.24 |
[BOJ S4][C++] ๋ฐฑ์ค 1544๋ฒ: ์ฌ์ดํด ๋จ์ด (0) | 2022.09.21 |
[BOJ][C++] ๋ฐฑ์ค 14889๋ฒ: ์คํํธ์ ๋งํฌ (0) | 2022.09.17 |