[코테 스터디] 1676번. 팩토리얼 0의 개수

2024. 3. 20. 13:31백준 문제와 소스 코드

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.

 

출력

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

 

예제 입력1

10

예제 출력1

2

예제 입력2

3

예제 출력2

0

 

 

문제 해결 방법

1.0의 개수를 찾아내는 것은 전체를 곱했을 때 10의 몇승인지를 찾아내는 것과 같다.

2. 10은 소수인 2와 5의 곱으로 나타나는데, 잘 생각해보면 N까지 5의 개수를 찾아내는 것과 똑같다.

3. N을 계속 5로 나누고 나온 몫들의 합을 구한다.

코드

#include<iostream>

using namespace std;

int main()
{
	int N;
	int result = 0;

	cin >> N;

	while (N / 5 != 0)
	{
		result += N / 5;
		N /= 5;
	}

	cout << result;
}