백준 문제풀이

1676. 팩토리얼 0의 개수

뮤츠 2022. 10. 29. 22:21

저는 무식하게 팩토리얼을 전부 구한뒤, 문자를 뒤집고 0의 갯수를 세는 무식한 방법을 떠올렸는데,

이렇게 하니까 출력초과(overflow?) 혹은 틀렸다고 나오더군요. 아무래도 500팩토리얼까지 나오려면 힘들었나 봅니다.

 

결국 답을 찾아봤는데, 생각보다 간단했습니다.

0의 갯수 = 인수분해를 했을때 10의 제곱수 = 소인수분해를 했을때 2와 5의 제곱수 중 최솟값.

팩토리얼은 순차적으로 곱해지므로, 텀이 짧은 2가 당연히 더 많을 수 밖에 없고, 따라서 5의 제곱수만 구하면 됩니다.

주의할 점은, 5의 제곱수에 해당할때는 5가 더 출몰(?) 한다는 점...

가령 24! 까지는 5, 10, 15, 20에서 각각 등장하여 5^4이지만, 25!부터는 25=5^2이라 5^6이 되어버립니다.

그점만 조심하면 되겠습니다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Java1676 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int count = 0;
		
		while (n>=5) {
				count += n/5;
				n /= 5;
		}
		System.out.println(count);
	}
}

'백준 문제풀이' 카테고리의 다른 글

10828. 스택 (자바, Java)  (0) 2022.11.05
2004. 조합 0의 개수  (0) 2022.10.29
9375. 패션왕 신해빈 (자바, Java)  (0) 2022.10.25
1010. 다리 놓기 (자바, Java)  (0) 2022.10.25
11051 이항 계수 2 (자바, Java)  (0) 2022.10.24