백준 알고리즘
[Silver V] 팩토리얼 0의 개수 - 1676
성능 요약
메모리: 13156 KB, 시간: 4 ms
분류
수학
문제 설명
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
음악 들으면서 같이 공부해요
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use std::io::{BufReader,BufRead,BufWriter,Write,stdin,stdout};
fn main(){
let mut reader= BufReader::new(stdin().lock());
let mut writer=BufWriter::new(stdout().lock());
let mut input= String::new();
reader.read_line(&mut input).unwrap();
//10!= 10 9 8 7 6 5 4 3 2 1= 3628800;
//10 100 1000같은 10의 거듭제곱
//0의 개수를 출력하기 위해서는 2*5가 몇개인지 확인
let n= input.trim().parse::<i64>().unwrap();
let mul5 = n / 5; //5는 5가 1개이므로 0
let mul25 = n / 25;//25는 5가 2개이므로 00
let mul125 = n / 125;//125는 5개 세개이므로 000
let result = mul5 + mul25 + mul125;
writeln!(writer,"{}",result).unwrap();
writer.flush().unwrap();
}