[BOJ] 2004번: 조합 0의 개수

https://www.acmicpc.net/problem/2004


n, m의 값이 상당히 크므로 실제로 nCm을 계산해서 연속한 0의 개수를 파악하는 것은 불가능에 가깝습니다.


그렇지만 nCm = n! / m!*(n-m)!이고, nCm이 가지고 있는 2의 갯수와 5의 갯수를 안다면 연속한 0의 개수를 알 수 있습니다.


예를 들어 100C3의 연속한 0의 개수를 알기 위해 100*99*98/6을 직접 계산해도 되지만, 이보다는 100C3이 인수 2를 2개, 인수 5를 2개 가지고 있으므로 연속한 0의 개수가 2개라는 것을 알 수 있습니다.


N!가 소인수 p를 몇 개 가지고 있는지는 [N/p]+[N/p^2]+[N/p^3]+... 으로 계산할 수 있습니다.


https://github.com/encrypted-def/BOJ/blob/master/2004.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 7562번: Knights Moves  (0) 2018.01.06
[BOJ] 9625번: RIJEČI  (0) 2018.01.06
[BOJ] 2590번: 색종이  (0) 2018.01.05
[BOJ] 9663번: N-Queen  (0) 2018.01.05
[BOJ] 2302번: 극장 좌석  (0) 2018.01.05
[BOJ] 1915번: 가장 큰 정사각형  (0) 2018.01.05
  Comments