https://www.acmicpc.net/problem/6064
์์ด๋์ด
1. ์๊ฐ ์ด๊ณผ
- ์ฒ์์๋ x, y๊ฐ์ด ๋์ฌ ๋๊น์ง 1์ฉ ๋ํด๊ฐ๋ฉฐ count๋ฅผ ํ๋ค. ์ซ์๊ฐ ๋ฐ๋ณต๋๋ฉด -1์ ์ถ๋ ฅํ๊ฒ ํ๋ค.
- ์๊ฐ์ด ๋๋ฌด ์ฌ์ ๋์ง ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
- ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์
์ฝ๋ ์ค๋ช
def find_K(M, N, x, y):
K = x
while K <= M * N:
if (K - x) % M == 0 and (K - y) % N == 0:
return K
K += M
return -1
๋ฐฑ์ค์ ์๋ ์ฒซ ๋ฒ์งธ ์์ ์ผ์ด์ค 10 12 3 9๋ก ์๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฒ ๋ค.
์ฐ๋ฆฌ๊ฐ ๊ตฌํ ์ซ์๋ฅผ K๋ผ๊ณ ํ์.
๊ทธ๋ผ ๊ทธ K๋ผ๋ ์ซ์๋ K = 10 * p + 3 = 12 * q + 9๋ฅผ ๋ง์กฑํ๋ค. (์ฌ๊ธฐ์ p, q๋ ์์ฐ์)
์์ ๋ณํํด์ ๋ณด๋ฉด (K - 3)์ 10์ผ๋ก ๋๋์ด ๋จ์ด์ง๊ณ , (K - 9)์ 12๋ก ๋๋์ด ๋จ์ด์ง๋ค.
์ด๋ฅผ ๋ฌธ์๋ก ๋ฐ๊ฟ์ ์จ๋ณด๋ฉด (K - x)๋ M์ผ๋ก ๋๋์ด ๋จ์ด์ง๊ณ , (K - y)๋ N์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ค.
์ด๊ฑธ ์ฝ๋์ ์ ์ฉํ๋ฉด ๋๋ค.
K๊ฐ์ M * N์ ๋์ง ์์ผ๋ฏ๋ก K๊ฐ์ ์ฆ๊ฐ์ํค๋ฉด์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธํ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์ฌ๊ธฐ์ ๊ทธ๋ฅ K๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉด ๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋๋ค.
K๊ฐ์ ๋ค์ ์๊ฐํด๋ณด๋ฉด ๊ฒฐ๊ตญ K๊ฐ์ M * p + x ๋๋ N * q + y์ด๋ฏ๋ก
K์ ์ด๊ธฐ๊ฐ์ x๋ก ์ ์ธํ๊ณ K๊ฐ์ M๋งํผ ์ฆ๊ฐ์ํค๋ฉด์ ํ์ธํด๋ณด๋ฉด ๋๋ค.
x๋์ y, M ๋์ N์ ์ฌ์ฉํด๋ ๋จ.
์ ์ฒด ์ฝ๋
import sys
T = int(input())
def find_K(M, N, x, y):
K = x
while K <= M * N:
if (K - x) % M == 0 and (K - y) % N == 0:
return K
K += M
return -1
for _ in range(T):
M, N, x, y = map(int, sys.stdin.readline().rstrip().split())
print(find_K(M, N, x, y))
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1043 ๊ฑฐ์ง๋ง (python ํ์ด์ฌ) (0) | 2022.07.09 |
---|---|
[๋ฐฑ์ค] 2467 ์ฉ์ก (python ํ์ด์ฌ) (0) | 2022.07.09 |
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก์ฐพ๊ธฐ (python ํ์ด์ฌ) (0) | 2022.07.06 |
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด (python ํ์ด์ฌ) (0) | 2022.07.05 |
[๋ฐฑ์ค] 17626 Four Squares (python ํ์ด์ฌ) (0) | 2022.07.05 |