====== 날짜 계산 ====== ===== 풀이 ===== * 연립 합동식 {x%15=E, x%28=S, x%19=M} 의 해를 찾는 문제. 모듈러스가 모두 서로소이므로 [[ps:연립 선형 합동식|중국인의 나머지 정리]]를 그냥 적용하면 된다. * 답은 1이상이어야 하므로, 해가 0인 경우에는 따로 처리해야 하는 것에 주의. * 모듈러스가 m_1, m_2, ..., m_n 일 때, 중국인의 나머지 정리의 시간복잡도는 O(n + sum(log(m_i)))이다. 이 문제에서는 m_i가 이미 문제에서 고정되어 있으므로 그냥 상수로 생각한다면 시간 복잡도는 그냥 O(1)이다. * 사실 이 문제에서는 저 모듈러 역원을 구해서 계산하는 표준적인 계산법을 쓰지 않더라도, 답의 범위가 15*28*19=7980 이하의 자연수라는 것을 알 수 있기 때문에, 그냥 1~7980까지 모든 수에 대해서 저 식을 만족하는지 대입해 보는 방법이 실제 수행속도로는 더 빠르다.. ===== 코드 ===== """Solution code for "BOJ 1476. 날짜 계산". - Problem link: https://www.acmicpc.net/problem/1476 - Solution link: http://www.teferi.net/ps/problems/boj/1476 """ from teflib import numtheory MODS = (15, 28, 19) def main(): E, S, M = [int(x) for x in input().split()] a, m = numtheory.linear_congruences((E, S, M), MODS, coprime_moduli=True) print(a if a > 0 else a + m) if __name__ == '__main__': main() * Dependency: [[:ps:teflib:numtheory#linear_congruences|teflib.numtheory.linear_congruences]] {{tag>BOJ ps:problems:boj:실버_5}}