티스토리 뷰

공부/Problem solving

Squarefree Number

구사과 2015. 9. 8. 22:23

http://www.spoj.com/problems/IE3

쿼리당 Sqrt(N)lgN에 풀 수 있다.


N 이하의 Square 수가 모두 Sqrt(N)개 있을 텐데, 이걸 단순히 포함배제로 하면 -

* 2^2의 배수 더해주고 -

* 3^2의 배수 더해주고 -

* 6^2의 배수 빼주고 -

* 4^2의 배수는 냅두고 -

* 5^2의 배수 더해주고 -

 ( ..... )

말도 안되는 시간 복잡도가 나오겠지만 이 때를 위해서 뫼비우스 함수라는 것이 존재한다.


뫼비우스 함수 f(n)은 :

 * f(n)이 제곱수로 나눠지면 0

 * f(n)의 소인수 수가 홀수면 -1

 * 아니면 1


으로 정의되는데 이걸 쓰면 저걸 어떻게 해주면 되나면

 * f(6) * 6^2의 배수 더하고

 * f(5) * 5^2의 배수 더하고

(....)


이렇게 깔끔하게 정의한다. 이걸로 K 이하의 squarefree number를 열거할 수 있고 이제 이거 가지고 parametric search하면 됨.


'공부 > Problem solving' 카테고리의 다른 글

이항계수 (nCr) mod p 계산하기  (8) 2015.09.25
Introduction to Polygon  (0) 2015.09.18
Empodia (IOI 2004)  (0) 2015.09.06
Count Number of Shortest Path w/ Floyd-Warshall  (1) 2015.09.02
CCC12 Stage 2 - The Winds of War  (0) 2015.09.01
댓글
공지사항
최근에 올라온 글
Total
Today
Yesterday