Pagini recente » Cod sursa (job #896080) | Cod sursa (job #2644723) | Cod sursa (job #1084610) | Cod sursa (job #607242) | Cod sursa (job #1425236)
#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++) {
if (i % 2 == 0) div2[i] = div2[i / 2] + 1;
if (i % 3 == 0) div3[i] = div3[i / 3] + 1;
if (i % 5 == 0) div5[i] = div5[i / 5] + 1;
}
int sol = 0, D2 = 0, D3 = 0, D5 = 0;
for (int i = 0; i <= N; i++) {
D2 = D2 + div2[N - i + 1] - div2[i];
D3 = D3 + div3[N - i + 1] - div3[i];
D5 = D5 + div5[N - i + 1] - div5[i];
if (rez[2] > D2) continue;
if (rez[3] > D3) continue;
if (rez[5] > D5) continue;
sol++;
}
out<<sol;
}