코-딩/BOJ

BOJ ::1676 팩토리얼 0의 개수 (C++)

힞뚜루마뚜루 2020. 2. 3. 13:47
728x90

https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

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

www.acmicpc.net

0은 2와 5의 의해 계산된다. (10 = 2x5)

5의 배수는 2의 배수보다 항상 적으므로 n보다 작은 5의 배수에서 5가 몇번 곱해져있는지 계산하면 된다.

시간을 줄이기 위해,

n을 5의 제곱수만큼 나눠주면 5가 총 몇번 들어있는지 바로 알 수 있다.

ex) 100/5 = 20  (5의 배수가 총 20번)

     100/25 = 4  (25의 배수가 총 4번)

     => 20+4 = 24

 

#include <iostream>
using namespace std;

int main(){
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int n, cnt = 0;
	cin >> n;
	for (int i = 5; i <= n; i*=5) {
		cnt += n / i;
	}
	cout << cnt << "\n";
	return 0;
}
728x90