Pagini recente » Cod sursa (job #712124) | Cod sursa (job #974652) | Cod sursa (job #1780049) | Cod sursa (job #1931437) | Cod sursa (job #444485)
Cod sursa(job #444485)
#include<stdio.h>
#define Max(a,b) a > b ? a : b
#define Min(a,b) a < b ? a : b
#define Inf 1<<30
int f[10],i,j,d,D,R,C,Des,Sc,S,m,sol;
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&R,&D);
for(d=2;d<=D;d++)
{
if(D%d==0)
{
while(D%d==0)
{
f[d]++;
D/=d;
}
}
}
Des=Inf;
for(d=2;d<6;d++)
if(f[d])
{
for(i=d;i<=R;i*=d)
S+=R/i;
S/=f[d];
Des=Min(Des,S);
}
m=(R-1)>>1;
for(j=1;j<=m;j++)
{
C=Max(j,R-j);
S=0; Sc=Inf;
for(d=2;d<6;d++)
if(f[d])
{
for(i=d;i<=C;i*=d)
{
S+=j/i;
S+=(R-j)/i;
}
S/=f[d];
Sc=Min(Sc,S);
}
if(Des-Sc>0) sol++;
}
sol<<=1;
if(!(R&1))
{
j=R>>1;
C=Max(j,R-j);
S=0; Sc=0;
for(d=2;d<6;d++)
if(f[d])
{
for(i=d;i<=C;i*=d)
{
S+=j/i;
S+=(R-j)/i;
}
S/=f[d];
Sc=Min(Sc,S);
}
if(Des-Sc>0) sol++;
}
printf("%d",sol);
return 0;
}