Cod sursa(job #252780)
Utilizator | Login Iustin Anca login | Data | 4 februarie 2009 21:53:44 |
---|---|---|---|
Problema | Factorial | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.8 kb |
# include <fstream>
using namespace std;
int main ()
{
int p, i, j, k, q[100], pp=1, nrz, n;
ifstream fin ("fact.in");
ofstream fout ("fact.out");
q[1]=5;
for (i=2;i<=13;i++)
q[i]=q[i-1]*5;
fin>>p;
if (p==0)
fout<<"1";
else
{
for (i=1;i<=13 && pp;i++)
if (5*p>=q[i] && 5*p<q[i+1])
pp=0;
--i;
nrz=p+1;
for (j=5*p;nrz>p;j-=5)
{
nrz=0;
k=i;
n=j;
while (k)
{
nrz=nrz+j/q[k];
--k;
}
if (nrz-p>p/25)
j=((j-p/25)/5)*5;
}
if (nrz==p)
fout<<n;
else
fout<<"-1";
}
return 0;
}