백준 1676번_팩토리얼 0의 개수_java
포스트
취소

백준 1676번_팩토리얼 0의 개수_java

문제

acmicpc9375_1

접근방식

뒤에 0이 나올려면 10의 배수여야 하고 10=2*5 이므로 N!의 값이 2를 약수로 가지는 횟수와 5를 약수로 가는지 횟수 중에 최소값을 구하면 된다.
2를 약수로 가지는 횟수보다 5를 약수로 가지는 횟수가 작으므로 N!이 5를 약수로 가지는 횟수를 구하면 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package acmicpc;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class acmicpc1676 {
	public static void main(String[] agrs) {
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
			
			int n = Integer.parseInt(reader.readLine());
			int cnt = 0;
			
			for(int i=1; i<=n; i++) {
				int a = i; 
				
				while(true) {
					int remain = a%5;
					if(remain > 0) {
						break;
					} else {
						a = a/5;
						cnt++;
					}
				}
			}
			
			writer.append(String.valueOf(cnt));
			writer.flush();
			writer.close();
		} catch (Exception e) {
			
		}
	}
}

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.