BOJ - 1676 - 팩토리얼 0의 개수
문제
문제 개념
문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
- 10!이 12314400 이라 할 때 2가 출력 되어야 한다.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cin >> num;
int tmp1, tmp2, tmp3;
tmp1 = num / 5;
tmp2 = num / 25;
tmp3 = num / 125;
cout << tmp1 + tmp2 + tmp3;
return 0;
}
SOL
- 뒤에서 0이 나올 경우는 10의 제곱일 경우 뿐이다.
- 따라서 5 그리고 2로 나눠지는 경우를 구한다.
- N이 500까지기에 5, 25, 125의 개수를 구한 후 더해 문제를 해결한다.