Cod sursa(job #179098)
| Utilizator | Data | 15 aprilie 2008 17:07:02 | |
|---|---|---|---|
| Problema | Factorial | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.68 kb |
#include <fstream.h>
ifstream f("fact.in");
ofstream g("fact.out");
long p;
long a,b,c,cvechi;
long nr(long numar)
{
long nr0=0;
while (numar%5==0)
{
nr0++;
numar=numar/5;
}
return nr0;
}
int main()
{
f>>p;
f.close();
if (p==0)
g<<1;
else
{
a=5;
b=5*p;
c=(a+b)/2;
long i,nr0,x;
nr0=0;
int sw=0;
for (i=a;i<=c;i=i+5)
{
x=i;
while (x%5==0)
{
nr0++;
x=x/5;
}
}
while (a<=b && sw==0)
{
cvechi=c;
/* g<<a<<" "<<b<<" "<<c<<" "<<nr0<<"\n";*/
if (p==nr0)
{
while (c%5!=0)
c--;
g<<c;
sw=1;
}
else
if (p<nr0)
{
b=c-1;
c=(a+b)/2;
while (cvechi%5!=0)
cvechi--;
for (i=cvechi;i>c;i=i-5)
nr0=nr0-nr(i);
}
else
{
a=c+1;
c=(a+b)/2;
cvechi=cvechi+1;
while (cvechi%5!=0)
cvechi++;
for (i=cvechi;i<=c;i=i+5)
nr0=nr0+nr(i);
}
}
if (sw==0)
g<<"-1";
}
return 0;
}
