
팩토리얼이 써져있지만, 팩토리얼 없이도 해결할 수 있는 문제입니다.
해당 문제는 끝부분 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;
}