Cod sursa(job #2327044)
| Utilizator | Data | 24 ianuarie 2019 12:55:40 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.86 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
long long calcul(long long x)
{
long long nr=0,i=5;
while(i<=x)
{
nr+=x/i;
i*=5;
}
return nr;
}
int main()
{
ifstream f("fact.in");
ofstream g("fact.out");
long long p;
f>>p;
if(p==0)
{
g<<1;
}
else
{
long long st=1,dr=500000000;
while(st<dr)
{
long long mij=st+(dr-st)/2;
long long rez=calcul(mij);
if(rez<p)
st=mij+1;
if(rez>p)
dr=mij-1;
else if(rez==p)
{
while(calcul(mij)==p)
mij--;
mij++;
g<<mij;
return 0;
}
}
g<<-1;
}
}
