Cod sursa(job #820629)
Utilizator | Data | 21 noiembrie 2012 08:31:56 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <fstream>
using namespace std;
int main()
{
int n,p,k,p5,st,dr,sol;
ifstream fin("fact.in");
fin>>p;
fin.close();
sol = -1;
// caut binar pe n
st = 1;
dr = 2000000000;
while(st<=dr)
{
n=(st+dr)/2;
k = 0;
for (p5 = 5; p5 <= n; p5 *= 5)
k = k + n / p5;
if (k == p)
{
sol = n;
dr = n - 1;
}
else if (k > p) dr = n - 1;
else st = n + 1;
}
ofstream fout("fact.out");
fout<<sol<<"\n";
fout.close();
return 0;
}