백준 문제 풀이/수학

6064 카잉 달력 (python)

한사공사 2024. 7. 16. 01:00

풀이

https://devum.tistory.com/83 

이 분 사진을 참고했다.

 

while문은 x를 m씩 계속 증가시키는데, 그 값은 m*n보다 커질 수 없으니 while x<=m*n:으로 하고,

이 문제는 두 가지만 이해하면 된다.

1. x값을 고정시켜두고 M값을 증가시키며 해를 찾음.

2. x를 10씩 올려가며 찾은 answer(x +=m)값%N - y%N == 0이 되는 값이 해다.

 

예를들어 

M = 10, N = 12일 때, <3:9>를 찾는 문제라면,

m = 10, n = 12, x = 3, y = 9

x가 3이면 정답은 3, 13, 23, 33, ... 113중 있다.

 

그래서 x값을 고정시키고, M값을 증가시키면서 해를 찾는데

y값은 증가시킨 x값들을 살펴봤을 때, answer(증가시킨 x)%n == y 값이 있다면 그게 해가 된다.

-> if x%n - y%n == 0: 혹은 if x%n == y%n:

 

코드

def num(m, n, x, y):
    while x <= m * n:
        if x%n - y%n == 0:
            return x
        x += m
    return -1

t = int(input())
for i in range(t):
    m, n, x, y = map(int, input().split())
    print(num(m, n, x, y))

 

 

'백준 문제 풀이 > 수학' 카테고리의 다른 글

1541 잃어버린 괄호 (python)  (0) 2024.07.06
1193 분수찾기 (python)  (0) 2024.07.02
15829 Hashing (python)  (0) 2024.06.27
11050 이항 계수 1 (python)  (0) 2024.06.26
2738 행렬 덧셈 (python)  (0) 2024.06.26