Pagini recente » Borderou de evaluare (job #156729) | Cod sursa (job #1514227) | Cod sursa (job #770775) | Cod sursa (job #1560878) | Cod sursa (job #1804211)
#include <stdio.h>
#include <stdlib.h>
inline long long int nrdiv(long long int n,long long int k)
{
int s=0;
while(n>0){
s+=n/k;
n=n/k;
}
return s;
}
int main()
{
long long int z,q,p=1,r=0;
FILE*fi,*fo;
fi=fopen("gfact.in","r");
fo=fopen("gfact.out","w");
fscanf(fi,"%lld%lld",&z,&q);
p=p<<44;
while(p>0)
{
if(nrdiv(p+r,z)<=q)
r+=p;
p/=2;
}
printf("%lld ",r);
while(nrdiv(r,z)>=q)
r--;
r++;
if(nrdiv(r,z)==q)
fprintf(fo,"%lld",r);
else fprintf(fo,"-1");
fclose(fi);
fclose(fo);
return 0;
}