Cod sursa(job #571746)
| Utilizator | Data | 4 aprilie 2011 19:07:57 | |
|---|---|---|---|
| Problema | Factorial | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
using namespace std;
#define MAX 4000000005
long long P , st , dr , mid , cpy , sol;
bool ok;
int main()
{
ifstream f ("fact.in");
ofstream g ("fact.out");
f >> P;
st = 1;
dr = MAX;
while (st < dr)
{
sol = 0;
mid = (st + dr) / 2;
cpy = mid;
while (cpy != 0)
{
cpy /= 5;
sol += cpy;
}
if (sol < P)
st = mid + 1;
else if (sol > P) dr = mid - 1;
else
{
dr = mid - 1;
ok = 1;
}
}
if (ok)
g << mid;
else g << -1;
return 0;
}
