Pagini recente » Cod sursa (job #162886) | Cod sursa (job #1147765) | Cod sursa (job #8672) | Cod sursa (job #2214817) | Cod sursa (job #245153)
Cod sursa(job #245153)
#include<iostream.h>
#include<stdio.h>
FILE *f=fopen("pascal.in","r"),*g=fopen("pascal.out","w");
long r,d,prim[6],p,pu[6],nr=0,rez=0,i,j,k,v[10000];
int solve()
{
long putere1,putere2,putere3,i1;
for(i1=1;i1<=nr;i1++)
{
putere1=putere3=putere2=0;
for(i=prim[i1],k=1;i<=r;i*=prim[i1],k++)
v[k]=v[k-1]+r/i;
putere1=v[k-1];
if(putere1<pu[i1])
return 0;
long aux=r-j;
for(i=prim[i1],k=1;i<=aux;i*=prim[i1],k++);
putere2=v[k-1];
for(i=prim[i1],k=1;i<=j;i*=prim[i1],k++);
putere3=v[k-1];
if(putere1-putere2-putere3<pu[i1])
return 0;
}
return 1;
}
int main()
{
fscanf(f,"%ld %ld",&r,&d);
for(i=2;i<=d;i++)
{
p=0;
while(!(d%i)) d/=i,p++;
if(p)
{
nr++;
prim[nr]=i;
pu[nr]=p;
}
}
long aux=r/2;
for(j=0;j<=aux;j++)
if(solve())
if(r%2==0)
if(j==aux)
rez++;
else
rez+=2;
else
rez+=2;
fprintf(g,"%ld\n",rez);
return 0;
}