Pagini recente » Cod sursa (job #1049779) | Cod sursa (job #2955030) | Cod sursa (job #1016777) | Cod sursa (job #1017439) | Cod sursa (job #3155629)
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
constexpr int N = 5e6;
constexpr array<int, 3> primes = {2, 3, 5};
array<array<int, 3>, N + 1> cnt_primes;
int main() {
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
for (int i = 1; i <= N; i++) {
int tmp = i;
for (int j = 0; j < 3; j++) {
while (tmp % primes[j] == 0) {
tmp /= primes[j];
cnt_primes[i][j]++;
}
}
for (int j = 0; j < 3; j++) {
cnt_primes[i][j] += cnt_primes[i - 1][j];
}
}
int r, d;
cin >> r >> d;
array<int, 3> req = {};
int tmp = d;
for (int i = 0; i < 3; i++) {
while (tmp % primes[i] == 0) {
tmp /= primes[i];
req[i]++;
}
}
int ans = 0;
for (int i = 0; i <= r; i++) {
// array<int, 3> bal = cnt_primes[r];
// for (int j = 0; j < 3; j++) {
// bal[j] -= cnt_primes[i][j];
// bal[j] -= cnt_primes[r - i][j];
// }
bool ok = true;
for (int j = 0; j < 3; j++) {
ok &= cnt_primes[r][j] - cnt_primes[i][j] - cnt_primes[r - i][j] >= req[j];
}
ans += ok;
}
cout << ans << '\n';
return 0;
}