Pagini recente » Ședință 2009-10-23 | Cod sursa (job #1003602) | Cod sursa (job #3291479) | Cod sursa (job #164413) | Cod sursa (job #602368)
Cod sursa(job #602368)
#include <fstream.h>
long v[13];
int i;
long functie (long T)
{
long cutzu=0;
for (i=0; i<12; i++)
{
cutzu+=T/v[i];
}
return cutzu;
}
int main()
{
long P;
long lsup=500000000, linf=1, aux;
v[0]=5;
for (i=1; i<12; i++)
{
v[i]=5*v[i-1];
}
ifstream ins;
ins.open("fact.in");
ins>>P;
ofstream ous;
ous.open("fact.out");
while (P!=functie(linf))
{
aux=(lsup+linf)/2;
if (functie(aux)>P)
{
lsup=aux;
}
else
{
//if (P==functie(aux))
linf=aux;
}
if (linf==lsup)
{
ous<<"-1";
ous.close();
return 0;
}
}
ins.close();
if (linf!=1)
{
while (functie(linf)==P)
{
linf--;
}
ous<<linf+1;
ous.close();
return 0;
}
ous<<"1";
ous.close();
return 0;
}