Pagini recente » Cod sursa (job #780602) | Cod sursa (job #192360) | Cod sursa (job #2429186) | Cod sursa (job #2698591) | Cod sursa (job #2209001)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("pascal.in");
ofstream fo("pascal.out");
const int N = 5000005;
int leg[3][N], d[3];
int ant, n, dv, t;
int main() {
fi >> n >> dv;
if (dv % 2 == 0)
for (int i = 1; i < N; ++i) {
t = i;
while (t % 2 == 0) {
leg[0][i]+= 1;
t/= 2; } }
if (dv % 3 == 0)
for (int i = 1; i < N; ++i) {
t = i;
while (t % 3 == 0) {
leg[0][i]+= 1;
t/= 3; } }
if (dv % 5 == 0)
for (int i = 1; i < N; ++i) {
t = i;
while (t % 5 == 0) {
leg[0][i]+= 1;
t/= 5; } }
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; }