Pagini recente » Cod sursa (job #346374) | Cod sursa (job #82190) | Cod sursa (job #1980780) | Cod sursa (job #213579) | Cod sursa (job #2705341)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
ll r, d, rez, put[5000005], put2[5000005];
int main() {
fin >> r >> d;
ll ori = 0, ori2 = 0, dc = d, d2 = 0;
if (d == 6)
d = 2, d2 = 3;
if (d == 4)
d = 2;
for (ll i = d; i <= r; i *= d)
for (ll j = i; j <= r; j += i)
++put[j];
for (ll i = d2; d2 != 0 && i <= r; i *= d2)
for (ll j = i; j <= r; j += i)
++put2[j];
for (int i = 1; i <= r; ++i) {
put[i] += put[i - 1];
put2[i] += put2[i - 1];
}
bool ok = false;
for (int j = 1; j <= r / 2; ++j) {
ll p = put[r] - put[j] - put[r - j];
if (dc == 6)
p = min(put[r] - put[j] - put[r - j], put2[r] - put2[j] - put2[r - j]);
if ((dc != 4 && p > 0) || (dc == 4 && p > 1)) {
++rez;
if (j == r / 2)
ok = true;
}
}
rez *= 2;
if (r % 2 == 0 && ok)
--rez;
fout << max((ll)0, rez);
return 0;
}