ps:problems:boj:1476
날짜 계산
ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 1476 |
문제명 | 날짜 계산 |
레벨 | 실버 5 |
분류 |
수학, 정수론 |
시간복잡도 | O(1) |
사용한 언어 | Python |
제출기록 | 34584KB / 92ms |
최고기록 | 52ms |
해결날짜 | 2021/01/31 |
풀이
- 연립 합동식 {x%15=E, x%28=S, x%19=M} 의 해를 찾는 문제. 모듈러스가 모두 서로소이므로 중국인의 나머지 정리를 그냥 적용하면 된다.
- 답은 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: teflib.numtheory.linear_congruences
ps/problems/boj/1476.txt · 마지막으로 수정됨: 2022/05/12 03:30 저자 teferi
토론