Pagini recente » Cod sursa (job #2205348) | Rating Butnaru Vasile-Cristi (cristi00245) | Cod sursa (job #650788) | Cod sursa (job #719981) | Cod sursa (job #2091418)
#include <bits/stdc++.h>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
const int RMAX = 5e6, INF = 2e9;
int n, d, ans;
int fact[RMAX + 2], aux[RMAX + 2];
int prime[] = {2, 3, 5};
int main()
{
for(int i = 1; i <= RMAX; i++)
fact[i] = INF;
in >> n >> d;
int tmp, p;
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)
aux[i]++;
p = 0; tmp = d;
while(tmp % prime[j] == 0)
{
p++;
tmp /= prime[j];
}
for(int i = 1; i <= n; i++)
{
fact[i] = min(fact[i], aux[i] / p);
aux[i] = 0;
}
}
for(int i = 1; i <= n; i++)
fact[i] += fact[i - 1];
int numarator, numitor;
for(int i = 1; i < n; i++)
{
numarator = fact[n];
numitor = fact[n - i] + fact[i];
if(numarator - numitor > 0)
ans++;
}
out << ans << '\n';
return 0;
}