저번에 올린 팩토리얼 0의 개수처럼 비슷하게 풀면 됩니다.
차이점이 있다면, 팩토리얼에서는 5의 개수만 세었다면 이번에는 분모와 분자 각각 2, 5의 개수를 세서 차이를 계산해야 합니다.
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
long long n, m;
long long cnt2 = 0, cnt5 = 0;
cin >> n >> m;
for (long long i = 2; i <= n; i *= 2) {
cnt2 += n / i;
}
for (long long i = 5; i <= n; i *= 5) {
cnt5 += n / i;
}
for (long long i = 2; i <= n - m; i *= 2) {
cnt2 -= (n - m) / i;
}
for (long long i = 5; i <= n - m; i *= 5) {
cnt5 -= (n - m) / i;
}
for (long long i = 2; i <= m; i *= 2) {
cnt2 -= m / i;
}
for (long long i = 5; i <= m; i *= 5) {
cnt5 -= m / i;
}
cout << min(cnt2, cnt5);
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 17087: 숨바꼭질 6 (0) | 2020.04.10 |
---|---|
[백준][C++] 9613: GCD 합 (0) | 2020.04.10 |
[백준][C++] 1676: 팩토리얼 0의 개수 (0) | 2020.04.10 |
[백준][C++] 17822: 원판 돌리기 (0) | 2020.04.08 |
[백준][C++] 17471: 게리맨더링 (0) | 2020.04.08 |