![[백준 / BOJ] 2004번 조합 0의 개수 (C++, Python)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXGsh1%2FbtrJpenYlkV%2FI9H3gPq0YlgRjNfEdKGKU0%2Fimg.png)
[백준 / BOJ] 2004번 조합 0의 개수 (C++, Python)◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이2022. 6. 20. 12:11
Table of Contents
반응형
링크 : https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제
문제 풀이
이전 문제와 비슷한 유형의 문제지만, 문제 조건에 정수 범위가 2,000,000,000이므로 조금 다른 알고리즘을 써야 하는 문제다.
nCm = n! / (n-m)! * m! 이므로, 팩토리얼의 0의 개수를 구했던 것처럼 n!, (n-m)!, m!의 2와 5의 개수를 구하면 되는 문제이다. 어떻게 구하느냐가 관건인데, 이는 간단한 반복문을 통해 구할 수 있다.
N!에서 k의 지수 개수를 구하는 방법은 k^i로 N을 계속 나눠주면 된다. 아래 예시들을 보자.
4 / 2 = 2 (2, 4)
4 / 4 = 1 (4)
=> 총 3개
6 / 2 = 3 (2, 4, 6)
6 / 4 = 1 (6)
=> 총 4개
25 / 2 = 12 (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24)
25 / 4 = 6 (4, 8, 12, 16, 20, 24)
25 / 8 = 3 (8, 16, 24)
25 / 16 = 1 (16)
=> 총 22개
이런 식으로 반복문을 세워주면 된다.
파이썬의 경우에는 함수를 하나만 만들고 2와 5를 매개변수로 받아 활용하는 방식으로 구현했다.
C++ 코드 전문
Python 코드 전문
소감
반응형
'◎ 자료구조와 알고리즘 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 / BOJ] 15650번 N과 M (2) (C++, Python) (0) | 2022.07.09 |
---|---|
[백준 / BOJ] 15649번 N과 M (1) (C++, Python) (0) | 2022.07.07 |
[백준 / BOJ] 1676번 팩토리얼 0의 개수 (C++, Python) (0) | 2022.06.13 |
[백준 / BOJ] 9375번 패션왕 신해빈 (C++, Python) (0) | 2022.06.12 |
[백준 / BOJ] 1010번 다리 놓기 (C++, Python) (0) | 2022.06.12 |
@Reo :: 코드 아카이브
자기계발 블로그