Pagini recente » Cod sursa (job #2594894) | Cod sursa (job #1957034) | Cod sursa (job #2419530) | Cod sursa (job #642428) | Cod sursa (job #801515)
Cod sursa(job #801515)
#include <cassert>
#include <cstdio>
using namespace std;
const int N = 5000005;
int n, d, sol, doi, trei, cinci, x, y;
int exp2[N], exp3[N], exp5[N];
int main() {
assert(freopen("pascal.in", "r", stdin) != NULL);
assert(freopen("pascal.out", "w", stdout) != NULL);
assert(scanf("%d %d", &n, &d) == 2);
for (int i = 1; i <= n; ++i) {
if (i % 2 == 0)
exp2[i] = exp2[i / 2] + 1;
if (i % 3 == 0)
exp3[i] = exp3[i / 3] + 1;
if (i % 5 == 0)
exp5[i] = exp5[i / 5] + 1;
}
for (int i = 1; i <= n; ++i) {
x = i;
y = n - i + 1;
doi = doi - exp2[x] + exp2[y];
trei = trei - exp3[x] + exp3[y];
cinci = cinci - exp5[x] + exp5[y];
if (d == 2 && doi > 0)
++sol;
if (d == 3 && trei > 0)
++sol;
if (d == 4 && doi > 1)
++sol;
if (d == 5 && cinci > 0)
++sol;
if (d == 6 && doi > 0 && trei > 0)
++sol;
}
printf("%d\n", sol);
}