Pagini recente » Cod sursa (job #1466842) | Cod sursa (job #324426) | Cod sursa (job #2778946) | Cod sursa (job #401942) | Cod sursa (job #1425235)
#include <iostream>
#include <fstream>
#define Nmax 5000005
std::ifstream in("pascal.in");
std::ofstream out("pascal.out");
int div2[Nmax], div3[Nmax], div5[Nmax], rez[10];
int main() {
int N, D;
in >> N >> D;
while (D % 2 == 0) {
rez[2]++;
D /= 2;
}
while (D % 3 == 0) {
rez[3]++;
D /= 3;
}
while (D % 5 == 0) {
rez[5]++;
D /= 5;
}
div2[0] = div3[0] = div5[0] = 0;
for (int i = 1; i <= N; i++) {
div2[i] = div2[i - 1];
div3[i] = div3[i - 1];
div5[i] = div5[i - 1];
int k = i;
while ((k & 1) == 0) div2[i]++, k >>= 1;
k = i;
while (k % 3 == 0) div3[i]++, k /= 3;
k = i;
while (k % 5 == 0) div5[i]++, k /= 5;
}
int sol = 0;
for (int i = 0; i <= N; i++) {
int D2 = div2[N] - div2[i] - div2[N - i];
int D3 = div3[N] - div3[i] - div3[N - i];
int D5 = div5[N] - div5[i] - div5[N - i];
if (rez[2] > D2) continue;
if (rez[3] > D3) continue;
if (rez[5] > D5) continue;
sol++;
}
out<<sol;
}