Pagini recente » Cod sursa (job #1897349) | Cod sursa (job #2881642) | Cod sursa (job #2779351) | Cod sursa (job #2722319) | Cod sursa (job #475741)
Cod sursa(job #475741)
#include<fstream>
using namespace std;
long zerouri[10]={0, 2, 24, 249, 2499, 24999, 249998, 2499999, 24999999, 249999998};
long long p,numar,ok;
long nrzero(long long n)
{
long m,nr=0;
m=5;
while (m<=n)
{
nr=nr+n/m;
m=m*5;
}
return nr;
}
void cautare(long long st, long long dr)
{
long long mijl,nz;
if (st<=dr)
{
mijl=(st+dr)/2;
nz=nrzero(mijl);
if (p<=nz)
{
if (numar>mijl && nz==p)
{
numar=mijl;
ok=1;
}
cautare(st,mijl-1);
} else
cautare(mijl+1,dr);
}
}
int main()
{
long long i,b;
ifstream fin("fact.in");
ofstream fout("fact.out");
fin>>p;
if (p==0)
fout<<"1"; else
{
i=0; b=1;
while (zerouri[i]<p)
{
i++;
b=b*10;
}
numar=b+1;
cautare(0,b);
if (ok==1)
fout<<numar; else
fout<<"-1";
}
fin.close();
fout.close();
return 0;
}