반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 1676 팩토리얼 0의 개수 본문

백준(Baekjoon) 문제

백준 1676 팩토리얼 0의 개수

huiung 2019. 2. 21. 15:28
반응형

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

문제와 채점은 위 사이트에서 확인 하실 수 있습니다

 

이 문제는 n팩토리얼을 하였을 때 끝자리부터 0이 아닌수가 나올때 까지의 0의 개수를 구하는 문제입니다. n이 500까지 가능하므로 팩토리얼을 구하는 것은 어마어마하게 큰수가 나오게 됩니다. 

 

따라서 어떻게 하면 0을 찾을 수 있을까를 생각해보면 기본적으로 끝자리에 0이 생기기 위해서는 2와 5라는 숫자가 필요하게 됩니다. 따라서 이 숫자들의 개수를 세어주면 되는데 기본적으로 n!의 진행에서는 5보다 2가 훨씬 많으므로 저희는 5의 개수만 셈으로써 0이 몇개나오는지 알 수 있습니다. 

이 때 주의할 점은 5의 제곱수가 나올 때 입니다. 25는 5가 2번 곱해진 것이므로 0을 두개 만들 수 있습니다. 또한 125는 0을 3개를 만들 수 있습니다.

따라서 주어진 n을 5로 나눈 몫과 25로 나눈몫과 125로 나눈 몫을(n이 500까지 가능하므로) 더하면 최종적으로 답을 구할 수 있습니다.

 

다음은 코드입니다.

 

#include <iostream>

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int n;
	int zero = 0;
	cin >> n;
	zero = n/5 + n/25 + n/125;
	cout<<zero;
	return 0;
}
반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 1932 정수 삼각형  (0) 2019.02.22
백준 6591 이항 쇼다운  (0) 2019.02.22
백준 1003 피보나치 함수  (0) 2019.02.21
백준 1021회전하는 큐  (0) 2019.02.19
백준 5430 AC  (0) 2019.02.19