본문 바로가기

Programming/ACMICPC

ACMICPC 2004 조합


문제

nCm의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 n, m(0≤m≤n≤2,000,000,000, n!=0)이 들어온다.

출력

첫째 줄에 0의 개수를 출력한다.


으으...입력 값의 크기가 너무 크다..!! 구하려는 것도 팩토리얼인데..


사실 처음 짠 코드는 그런 거 상관없고 문제만 풀리면 장땡..! 이라는 식으로 만든 코드다.

nCm = n!/{m!(n-m)!} 이라는 수식에만 맞춰서

파이선으로 심지어 팩토리얼을 구현하여 시간초과가 뜰 것이 어쩌면 당연한 코드다.



결국 올바른 풀이법은..

굳이 nCm의 값을 구할 필요가 없다는 거다.

필요한 것은 뒤에 오는 0의 개수이니 값을 소인수 분해해서 2 와 5의 지수중 더 작은 값을

찾아주면 그게 10^k 이겠지!

이를 위해 필요한게 nCm의 값에 2와 5가 몇 개나 들어가 있냐이고..


물론 인터넷 서핑으로 알아냈다. 수학과는 담을 쌓은지 좀 오래되서...



여담이지만, 좋은 프로그래머는 좋은 변수명, 함수명을 사용하는 프로그래머라는데


난 글러먹은걸까... 군대에서 영어공부도 해야하나..

'Programming > ACMICPC' 카테고리의 다른 글

ACMICPC 1789 수들의 합  (0) 2015.09.13
ACMICPC 1004 어린왕자  (0) 2015.09.13
ACMICPC 문제집: A+B  (0) 2015.09.11
ACMICPC 10943 랜덤 게임~  (0) 2015.09.11
ACMICPC 1267 핸드폰 요금  (0) 2015.08.28