Cod sursa(job #2550410)
Utilizator | Data | 18 februarie 2020 19:45:12 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.67 kb |
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int p, st, mij=0, nrz=0;
long long dr;
int putere(int k)
{
int nr=0, y=5;
while(k>=y)
{
nr+=k/y;
y=y*5;
}
return nr;
}
int main()
{
fin>>p;
if(p==0)
{
fout<<'1';
return 0;
}
st=1;
dr=2000000000;
while(st<=dr)
{
mij=(st+dr)/2;
nrz=putere(mij);
if(nrz==p)
break;
else if(nrz<p)
st=mij+1;
else
dr=mij-1;
}
if(nrz==p)
fout<<mij-mij%5;
else
fout<<-1;
return 0;
}