Pagini recente » Cod sursa (job #3121610) | Cod sursa (job #519651) | Cod sursa (job #1537422) | Cod sursa (job #3155272) | Cod sursa (job #378361)
Cod sursa(job #378361)
#include <cstdio>
#include <cstring>
#define file_in "zero2.in"
#define file_out "zero2.out"
#define Nmax 1000100
#define Inf 10000000000000000LL
int n,i,N,B,d,e,v[Nmax],nrp,nrf,j,max,put,t;
long long suma,min;
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
for (t=1;t<=10;++t)
{
scanf("%d %d", &N, &B);
//printf("%d\n", B);
memset(v,0,sizeof(v));
//descompune B
max=0;
d=2;
e=0;
while(B%d==0)
{
e++;
B/=d;
}
if (e>0)
{
max=d;
v[d]=e;
}
d=3;
while(B!=1)
{
e=0;
while(B%d==0)
{
e++;
B/=d;
}
if (e>0)
{
max=d;
v[d]=e;
}
d+=2;
}
min=Inf;
//for (i=1;i<=max;++i) if (v[i]>0)printf("%d %d\n", i, v[i]);
for (i=2;i<=max;++i)
if (v[i]>0)
{
put=i;
suma=0;
for (j=1;j<=N;++j)
{
nrf=0;
n=j;
d=put;
while(n>=d)
{
nrf+=n/d;
n/=d;
}
if (nrf!=0)
suma+=nrf;
}
if ((suma/v[i])<min)
min=(suma/v[i]);
}
printf("%lld\n", min);
}
fclose(stdin);
fclose(stdout);
return 0;
}