ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

6064๋ฒˆ: ์นด์ž‰ ๋‹ฌ๋ ฅ

๋ฌธ์ œ ์ตœ๊ทผ์— ICPC ํƒ์‚ฌ๋Œ€๋Š” ๋‚จ์•„๋ฉ”๋ฆฌ์นด์˜ ์ž‰์นด ์ œ๊ตญ์ด ๋†€๋ผ์šด ๋ฌธ๋ช…์„ ์ง€๋‹Œ ์นด์ž‰ ์ œ๊ตญ์„ ํ† ๋Œ€๋กœ ํ•˜์—ฌ ์„ธ์›Œ์กŒ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ์นด์ž‰ ์ œ๊ตญ์˜ ๋ฐฑ์„ฑ๋“ค์€ ํŠน์ดํ•œ ๋‹ฌ๋ ฅ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๏ฟฝ

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ฒซ ๋ฒˆ์งธ ํ•ด์˜ ๋ฒ”์œ„๊ฐ€ M, ๋‘ ๋ฒˆ์งธ ํ•ด์˜ ๋ฒ”์œ„๊ฐ€ N์ด๊ณ  ํ˜„์žฌ ๋…„๋„๊ฐ€ ๊ฐ๊ฐ x, y๋กœ ์ฃผ์–ด์งˆ ๋•Œ ๋ช‡ ๋ฒˆ์งธ ํ•ด์ธ์ง€ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋˜ํ•œ N, M์„ ํ†ตํ•ด ์„ธ์ƒ์˜ ์ข…๋ง์ด ๋„๋ž˜ํ•˜๋Š” ๋งˆ์ง€๋ง‰ ํ•ด๋ฅผ ๊ตฌํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ ์ด๋Š” N, M์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜์ด๋‹ค.

 

 ์˜ˆ์‹œ์™€ ๊ฐ™์ด M, N, x, y์€ 10, 12, 3, 9์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋‹น ์—ฐ๋„๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

x y
3 3 % 12 = 3
13 13 % 12 = 1
23 23 % 12 = 11
33 33 % 12 = 9

 ์ฆ‰, x ๊ฐ’์— M ๊ฐ’์„ ๋” ํ•ด์ค€ ๊ฐ’์— N์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ y์™€ ๊ฐ™์•„์ง€๊ฒŒ ๋˜๋ฉด ์ •๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋กœ ๋ชจ๋“  ๋…„๋„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค. ๋งŒ์•ฝ x์˜ ๊ฐ’์ด ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ณด๋‹ค ์ปค์ง„๋‹ค๋ฉด, ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin
from math import gcd

if __name__ == "__main__":
    t = int(stdin.readline())
    for _ in range(t):
        m, n, x, y = map(int, stdin.readline().split())
        lcm = m * n // gcd(m, n)
    
        while x < lcm:
            if (x - 1) % n + 1 == y:
                break
            x += m

        print(x if x < lcm else -1)
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€