에라토스테네스의 체를 사용해서 소수를 구해놓은 뒤 소수 리스트를 앞에서부터 보면서 답을 출력하는 방식을 사용했습니다. 대부분 그렇게 짜는 거 같더라구요.
에라토스테네스의 체 부분은 그렇다 치고, 그 아래의 답을 구하는 부분을 보면, 테스트케이스의 수 T와 100만 이하 소수의 갯수 n에 대해 O(Tn)인 것 같습니다. 이때 T <= 100000, n = 약 8만입니다. 그러면 시간 초과가 나는 게 정상인 거 같은데... 왜 안 날까요? 아마 거의 모든 수가 8만보다 훨씬 적은 수의 루프를 돌고 답을 찾을 수 있어서 그런 것 같은데, 이 문제가 항상 1초 안에 작동한다는 것을 증명할 수 있나요?
mhkim4886 5년 전
일단 제가 제출해서 약 32ms로 AC 받은 코드를 첨부합니다.
에라토스테네스의 체를 사용해서 소수를 구해놓은 뒤 소수 리스트를 앞에서부터 보면서 답을 출력하는 방식을 사용했습니다. 대부분 그렇게 짜는 거 같더라구요.
에라토스테네스의 체 부분은 그렇다 치고, 그 아래의 답을 구하는 부분을 보면, 테스트케이스의 수 T와 100만 이하 소수의 갯수 n에 대해 O(Tn)인 것 같습니다. 이때 T <= 100000, n = 약 8만입니다. 그러면 시간 초과가 나는 게 정상인 거 같은데... 왜 안 날까요? 아마 거의 모든 수가 8만보다 훨씬 적은 수의 루프를 돌고 답을 찾을 수 있어서 그런 것 같은데, 이 문제가 항상 1초 안에 작동한다는 것을 증명할 수 있나요?