Nu aveti permisiuni pentru a descarca fisierul grader_eval.cpp
Cod sursa(job #7873)
| Utilizator | Data | 22 ianuarie 2007 20:54:35 | |
|---|---|---|---|
| Problema | Factorial | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.05 kb |
#include <fstream>
int main ()
{
long P,y,pres,presc=0,adaugat=0;
std::ifstream f ("fact.in");
f>>P;
f.close();
pres=P*4;
presc+=pres/5;
presc+=pres/25;
presc+=pres/125;
presc+=pres/625;
presc+=pres/3125;
presc+=pres/15625;
presc+=pres/78125;
presc+=pres/390625;
presc+=pres/1953125;
presc+=pres/9765625;
presc+=pres/48828125;
presc+=pres/244140625;
presc+=pres/1220703125;
if (presc<P)
{
while (pres%5!=0)
{
pres+=1;
adaugat=1;
}
if (adaugat)
{
y=pres;
while ((y%5==0) && (y>0))
{
presc++;
y/=5;
}
}
while (presc<P)
{
y=pres;
while ((y%5==0) && (y>0))
{
y=y/5;
presc++;
}
pres+=5;
}
}
else
{
while (pres%5!=0)
{
pres-=1;
adaugat=1;
}
if (adaugat)
presc++;
while (presc>P)
{
y=pres;
while ((y%5==0) && (y>0))
{
y=y/5;
presc--;
}
pres-=5;
}
}
std::ofstream g ("fact.out")
if (presc==P)
g<<pres;
else
g<<-1;
g.close();
return 0;
}