Pagini recente » Cod sursa (job #2268754) | Cod sursa (job #1392216) | Cod sursa (job #924867) | Cod sursa (job #2753709) | Cod sursa (job #1804199)
#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<<30;
while(p>0)
{
if(nrdiv(p+r,z)<=q)
r+=p;
p/=2;
}
while(nrdiv(r,z)>=q)
r--;
r++;
if(nrdiv(r,z)==q)
fprintf(fo,"%d",r);
else fprintf(fo,"-1");
fclose(fi);
fclose(fo);
return 0;
}