Cod sursa(job #124930)
| Utilizator | Data | 20 ianuarie 2008 10:20:09 | |
|---|---|---|---|
| Problema | GFact | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.41 kb |
#include <stdio.h>
int main()
{ int p,q,n,i,j,st,dr,m,nr,cp;
FILE*f=fopen("gfact.in","r");
FILE*g=fopen("gfact.out","w");
fscanf(f,"%d%d",&p,&q);
cp=p;
st=1;
dr=2000000000;
while(st<=dr)
{
nr=0;
m=(st+dr)/2;
while(m/cp)
{
nr=nr+m/cp;
cp=cp*p;
}
if (nr==q)
{
while(m%p) m--;
fprintf(g,"%d",m);
return 0;
}
if (nr>q) dr=m-1;
if (nr<q) st=m+1;
cp=p;
}
return 0;
}