Pagini recente » Cod sursa (job #553305) | Cod sursa (job #458847) | Cod sursa (job #994178) | Cod sursa (job #1480719) | Cod sursa (job #2208989)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("pascal.in");
ofstream fo("pascal.out");
const int N = 2500005;
int leg[3][N], d[3];
int ant, n, dv;
int main() {
fi >> n >> dv;
for (int i = 2; i < N; i*= 2)
for (int j = i; j < N; j+= i)
leg[0][j]+= 1;
for (int i = 3; i < N; i*= 3)
for (int j = i; j < N; j+= i)
leg[1][j]+= 1;
for (int i = 5; i < N; i*= 5)
for (int j = i; j < N; j+= i)
leg[2][j]+= 1;
for (int i = 0; i < 3; ++i)
for (int j = 1; j < N; ++j)
leg[i][j]+= leg[i][j - 1];
if (dv % 2 == 0)
d[0]+= 1;
if (dv % 3 == 0)
d[1]+= 1;
if (dv % 4 == 0)
d[0]+= 1;
if (dv % 5 == 0)
d[2]+= 1;
for (int st = 0, dr = n; st < dr; ++st, --dr) {
bool flag = true;
for (int p = 0; p < 3 && flag; ++p)
flag&= d[p] <= (leg[p][n] - leg[p][st] - leg[p][n - st]);
ant+= 2 * int(flag); }
if (n % 2 == 0) {
bool flag = true;
for (int p = 0; p < 3 && flag; ++p)
flag&= d[p] <= (leg[p][n] - leg[p][n / 2] - leg[p][n / 2]);
ant+= int(flag); }
fo << ant << endl;
return 0; }