Pagini recente » Diferente pentru problema/euclid intre reviziile 24 si 12 | Monitorul de evaluare | Istoria paginii utilizator/mario2003 | Cod sursa (job #2066663) | Cod sursa (job #1537721)
/*#include<iostream>
#include<fstream>
using namespace std;
int main()
{
long long n=5,nr,p,aux;
fstream f("fact.in");
ofstream g("fact.out");
while(f>>p)
{
if(p==0)
g<<1<<endl;
if(p<0)
g<<-1<<endl;
n=0;
while(p>0)
{
nr=0;
n+=5;
aux=n;
while(aux%5==0)
{
aux/=5;
nr++;
}
p-=nr;
}
if(n>0)
{
aux=n;
if(p<0)
aux=-1;
g<<aux<<endl;}
}
return 0;
}
*/
#include <iostream>
#include <fstream>
#define NMax 100000001
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int fct (int x)
{
int a=5,rez=0;
while (x/a)
{
rez=rez+x/a;
a=a*5;
}
return rez;
}
int main ()
{
int p,val;
f>>p;
if (p==0) g<<1;
else
{
int min=1,max=NMax,mid;
bool ok=false;
while (min<max && !ok)
{
mid=(min+max)/2;
val=fct(mid);
if (val<p) min=mid+1;
else if (val>p) max=mid-1;
else ok=true;
}
if (ok)
{
while (mid%5) mid--;
g<<mid;
}
else g<<-1;
}
}