[BOJ]1676-팩토리얼 0의 개수

yoon_H·2024년 9월 27일

BOJ

목록 보기
101/110

1676

2와 5를 곱하면 10이 되니 두 수의 개수 중 최솟값이 정답으로 생각해서 다음과 같이 코드를 짰다. 하지만 5의 개수가 2보다 현저히 낮기 때문에 5의 경우만 생각해도 되는 문제. 시간이 넉넉해서 통과했으니 상관없다!

성공코드

#include <iostream>
using namespace std;

int main()
{
	cin.tie(NULL);
	cout.tie(NULL);
	ios::sync_with_stdio(false);

	int N;

	cin >> N;

	int cnt2 = 0;
	int cnt5 = 0;
	
	for (int i = 2; i <= N; i++)
	{
		int tmp = i;

		while (tmp % 2 == 0)
		{
			tmp /= 2;

			cnt2 += 1;
		}

		tmp = i;

		while (tmp % 5 == 0)
		{
			tmp /= 5;

			cnt5 += 1;
		}
	}

	cout << min(cnt2, cnt5);



}

0개의 댓글