ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 4913 |
문제명 | 페르마의 크리스마스 정리 |
레벨 | 골드 4 |
분류 |
정수론 |
시간복잡도 | O(nloglogn + Qlogn) |
인풋사이즈 | Q<=?, n<=1,000,000, |
사용한 언어 | Python 3.11 |
제출기록 | 41332KB / 84ms |
최고기록 | 84ms |
해결날짜 | 2023/03/20 |
"""Solution code for "BOJ 4913. 페르마의 크리스마스 정리".
- Problem link: https://www.acmicpc.net/problem/4913
- Solution link: http://www.teferi.net/ps/problems/boj/4913
Tags: [number theory]
"""
import bisect
import sys
from teflib import numtheory
def main():
L_and_U = [[int(x) for x in line.split()] for line in sys.stdin]
max_u = max(u for l, u in L_and_U)
primes = numtheory.prime_list(max_u)
square_sum_primes = [2] + [p for p in primes if p % 4 == 1]
for l, u in L_and_U:
if l == u == -1:
break
prime_count = bisect.bisect_right(primes, u) - bisect.bisect_left(
primes, l
)
square_sum_prime_count = (
bisect.bisect_right(square_sum_primes, u)
) - bisect.bisect_left(square_sum_primes, l)
print(l, u, prime_count, square_sum_prime_count)
if __name__ == '__main__':
main()