[BaekJoon] 카잉달력

2979 단어 백준백준

🔦 문제 링크

✍️ 풀이


  1. x, y와 동일한 숫자를 만들어야 한다.
  2. xM만큼 증가 할 때 다시 x가 된다.
  3. 따라서 xM만큼 증가 시킨 값을 n으로 나눈 나머지가 y인 값을 구한다.
  4. 이 과정을 최소공배수보다 작거나 간단하게는 두 n, m의 곱까지 진행해준다.

🛠 코드


for _ in range(int(input())):
    m, n, x, y = map(int, input().split())
    x -= 1  # caculate easily
    y -= 1
    standard = x
    while standard < n * m:
        if standard % n == y:
            print(standard + 1)
            break
        standard += m
    if standard % n != y:
        print(-1)

📝 정리


  • 최소공배수최대공약수를 구하는 방법은 알고있도록 하자.

좋은 웹페이지 즐겨찾기