Cod sursa(job #2507184)
Utilizator | Data | 9 decembrie 2019 19:06:52 | |
---|---|---|---|
Problema | Factorial | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int p5(int a)
{ int result=0;
uint64_t p5=5;
while(p5<=a)
{ result+=a/p5;
p5*=5;
}
return result;
}
int main()
{ int p;
fin>>p;
int st=5*p,dr=INT64_MAX,mid,s;
while(st<=dr)
{ mid=(st+dr)/2;
if(p5(mid)==p)
{ s=mid-mid%5;
break;
}
if(p5(mid)>p)
{
dr =mid-1;
}
if(p5(mid)<p)
{
st=mid+1;
}
}
fout<<s;
return 0;
}