풀이
이 분 사진을 참고했다.
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 |