Cod sursa(job #157192)
Utilizator | Data | 12 martie 2008 21:43:05 | |
---|---|---|---|
Problema | Factorial | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.46 kb |
#include<fstream.h>
#include<math.h>
long n,m,s=1,c,d=2000000,aux,z=0,j;
int main()
{
ifstream f("fact.in");
ofstream g("fact.out");
f>>n;
if(n==0) g<<"1";
else
{
m=(d+s)/2;
while (z!=n&&s<=d)
{j=1;c=5;z=0;
while (c<=m)
{ aux=m/c;
j++; z+=aux;
c=pow(5,j);
}
if(z>n) {d=m-1;m=(d+s)/2;}
else if(z<n) {s=m+1; m=(d+s)/2;}
}
if(z==n) {m=m-m%5;
g<<m; }
else g<<"-1";
}
f.close();
g.close();
return 0;
}