Pagini recente » Cod sursa (job #584150) | Cod sursa (job #430675) | Cod sursa (job #631340) | Cod sursa (job #716944) | Cod sursa (job #2091514)
#include <bits/stdc++.h>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
const int RMAX = 5e6;
int n, d, ans;
int fact[3][RMAX + 2];
int prime[] = {2, 3, 5};
int p[3];
int main()
{
in >> n >> d;
int tmp;
for(int j = 0; j < 3; j++)
if(d % prime[j] == 0)
{
for(int div = prime[j]; div <= n; div *= prime[j])
for(int i = div; i <= n; i += div)
fact[j][i]++;
tmp = d;
while(tmp % prime[j] == 0)
{
p[j]++;
tmp /= prime[j];
}
}
for(int j = 0; j < 3; j++)
for(int i = 1; i <= n; i++)
fact[j][i] += fact[j][i - 1];
bool ok;
int numarator, numitor;
for(int i = 1; i < n; i++)
{
ok = true;
for(int j = 0; j < 3; j++)
if(p[j])
{
numarator = fact[j][n];
numitor = fact[j][n - i] + fact[j][i];
if(numarator - numitor < p[j])
{
ok = false;
break;
}
}
ans += ok;
}
out << ans << '\n';
return 0;
}