Mai intai trebuie sa te autentifici.
Cod sursa(job #140648)
Utilizator | Data | 22 februarie 2008 01:28:15 | |
---|---|---|---|
Problema | Factorial | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<fstream.h>
#include<math.h>
ifstream f("fact.in");
ofstream g("fact.out");
long double z[31],p;
long double zero(long double n)
{long double z=0;
while(floor(n/5)>0) {z+=floor(n/5); n=floor(n/5);}
return z;
}
int main()
{int i;
f>>p;
if(p==0) g<<1;
else
{
for(i=0;i<=30;i++)
z[i]=zero(pow(5,i));
long double c,n=0,p2=p;
for(i=30;i>0;i--)
if(p2>=z[i])
{c=floor(p2/z[i]);
n=n+c*pow(5,i);
p2=p2-c*z[i];
}
if(zero(n)==p) g<<n;
else g<<-1;
}
f.close();
g.close();
return 0;
}