Cod sursa(job #843999)
Utilizator | Iacob Paul Cristian crysstyan | Data | 28 decembrie 2012 18:12:15 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | 23dezile_2 | Marime | 0.88 kb |
#include<fstream>
using namespace std;
int p;
int nrzero(int val)
{
int rez=0;
do
{
val/=5;
rez+=val;
}
while (val/5!=0);
return rez;
}
int caut(int st, int dr)
{
int val,med;
while(st<=dr)
{
med=dr-(dr-st)/2;
val=nrzero(med);
if (val>=p)
dr=med-1;
else
st=med+1;
}
val=nrzero(med);
if (val<p)
{
med++;
val=nrzero(med);
}
if (val==p)
return med;
else
return -1;
}
int main()
{
ifstream f("fact.in");
ofstream g("fact.out");
int sol;
f>>p;
if (p==0)
sol=1;
else
if(p==1)
sol=5;
else
sol=caut(1,5*p);
g<<sol;
return 0;
}