BOJ : https://www.acmicpc.net/problem/2004
GitHub : https://github.com/junho0956/Algorithm/blob/master/2004/2004/%EC%86%8C%EC%8A%A4.cpp
이전에 풀었던 팩토리얼 0의 개수와 비슷한 문제이다.
조합을 통해 0을 만들 수 있는 조건이 무엇일까
1 3 7 9 같은 숫자로는 아무리 곱하고 나누어봐도 ..0 이라는 숫자를 만들 수가 없다.
=> 2와 5가 필요한게 이 문제의 핵심이다.
그럼 2와 5를 소인수분해를 통해서 개수를 알게된다면
어떻게 해야 0을 만들 수 있을까?
** 만약 2가 4개, 5가 3개라면 ==> 0은 3개가 나온다
** 만약 2가 7개, 5가 2개라면 ==> 0은 2개가 나온다
==> 2와 5의 갯수중 적은 숫자만큼 곱해야 0이 나오게된다.
더보기
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
|
#include <iostream>
using namespace std;
int solve(int size, int num) {
int cnt = 0;
while (size>=num) {
cnt+=size/num;
size /= num;
}
return cnt;
}
int main() {
int n, m, five, two;
cin >> n >> m;
five = solve(n, 5) - solve(n - m, 5) - solve(m, 5);
two = solve(n, 2) - solve(n - m, 2) - solve(m, 2);
if (five >= two) cout << two;
else cout << five;
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'algorithm > BOJ' 카테고리의 다른 글
BOJ 11724번 연결 요소의 개수 (0) | 2020.01.13 |
---|---|
BOJ 1260번 DFS와 BFS (0) | 2020.01.13 |
BOJ 1676번 팩토리얼 0의 개수 (0) | 2020.01.13 |
BOJ 10872번 팩토리얼 (0) | 2020.01.13 |
BOJ 11653번 소인수분해 (0) | 2020.01.13 |