Cod sursa(job #47396)
Utilizator | Data | 3 aprilie 2007 17:31:15 | |
---|---|---|---|
Problema | Factorial | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<stdio.h>
#include<values.h>
int main()
{long long x=1,pr,n,p,i,j,m,nr;
FILE *f=fopen("fact.in","r");
FILE*g=fopen("fact.out","w");
fscanf(f,"%lld",&p);
if (p==0) fprintf(g,"1");
else {
i=0;
j=MAXLONG;
j+=MAXLONG;
while (i<j-1)
{ m=(i+j)/2;
nr=0; pr=5;
while(m/pr!=0) {nr+=m/pr; pr*=5;}
if (nr==p)
{while(m%5!=0)
{m--;
if (m%5==0) {fprintf(g,"%lld",m); break;}}
x=0;
break;}
else if (nr<p) i=m+1;
else j=m-1;}
if (x) fprintf(g,"-1"); }
fclose(f);
fclose(g);
return 0;}