728x90
반응형
문제
중국인의 나머지 정리(CRT)를 알고 있는 사람이라면 바로 해당 정리를 이용해서 문제를 풀어야겠다는걸 알 수 있다.
CRT는 주어진 법들이 서로소 관계일때만 적용되므로, 일반적인 CRT와는 약간 다르게 바꿔서 함수를 짜야 한다.
풀이
import sys
input = sys.stdin.readline
def ext_euc(a, b):
if b==0: return a, 1, 0
g, x, y = ext_euc(b, a%b)
return g, y, x-(a//b)*y
def solve(a1, m1, a2, m2):
g, k1, k2 = ext_euc(m1, m2)
q, r = divmod(a2-a1, g)
if r!=0: return -1,-1
l = m1*m2//g
return (k1*q*m1+a1)%l, l
for _ in range(int(input())):
A, B, C, a, b, c = map(int, input().split())
ab, AB = solve(a, A, b, B)
if ab<0: print(-1); continue
print(solve(ab, AB, c, C)[0])
내 풀이 코드가 엄청 더러워서 푸신 분들 중에 깔끔한 풀이가 있어 그 풀이를 참고해서 재작성하였다.
728x90
반응형
'BOJ > 문제' 카테고리의 다른 글
[python3] 백준 5525번 - IOIOI (0) | 2024.10.05 |
---|---|
[python3] 백준 31478번 - 포니 양은 놀고 싶어! (0) | 2024.10.04 |
[python3] 백준 3955번 - 캔디 분배 (0) | 2024.09.26 |
[python3] 백준 11726번 - 2×n 타일링 (0) | 2024.09.11 |
[python3] 백준 1463번 - 1로 만들기 (0) | 2024.08.21 |