Cod sursa(job #261180)
Utilizator | Adrian Draghici Addy. | Data | 17 februarie 2009 22:10:56 |
---|---|---|---|
Problema | Factorial | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
#include <stdio.h>
long long t,p,n,u,nr0,x,y,nc;
int main(){
FILE *f = fopen("fact.in", "r");
FILE *g = fopen("fact.out", "w");
x=0;
y=1<<62;
fscanf(f,"%lld",&p);
while (x<=y) {
n=x+(y-x)/2;
t=5;
nr0=0;
while (t<=n) {
nr0+=n/t;
t*=5;
}
if (nr0==p)
nc=n;
if (nr0>=p) {
y=n-1;
}
else
x=n+1;
}
if (nc)
fprintf(g,"%lld",nc);
else
fprintf(g,"-1");
if (p==0)
fprintf(g,"1");
fclose(f);
fclose(g);
return 0;
}