백준 1676 - 팩토리얼 0의 개수

황재진·2024년 5월 28일

백준

목록 보기
31/54

팩토리얼이 써져있지만, 팩토리얼 없이도 해결할 수 있는 문제입니다.

해당 문제는 끝부분 0의 개수를 찾는 문제입니다. 10! 이라면 3628800 이므로 2가 정답입니다.

끝부분의 0을 찾기 위해서는 수 안에 10이 몇개 있는지 찾아내면 됩니다. 10은 5x2 이므로 결국 5와 2의 개수를 찾으면 됩니다.
더 나아가 수 안에서 5의 배수의 개수와 2의 배수의 개수 중 5의 배수의 개수가 적을 수밖에 없기에 5의 배수의 개수만 찾아주면 됩니다.

그러나, 만약 25와 같이 5가 여러번 곱해진 형태는 5가 하나가 아닙니다. 즉, 5의 제곱 형태는 한번 더 더해줘야 합니다.

#include <iostream>

int main()
{
	int n;
	std::cin >> n;

	int five = 5;
	int result = 0;
	while (five <= n)
	{
		result += n / five;
		five *= 5;
	}

	std::cout << result;

	return 0;
}
profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

0개의 댓글