Cod sursa(job #1817258)
| Utilizator | Data | 27 noiembrie 2016 15:49:13 | |
|---|---|---|---|
| Problema | Factorial | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
#include<fstream>
using namespace std;
ifstream cin("fact.in");
ofstream cout("fact.out");
long long p,rez = -1;
int check(int n)
{
int aux1 = 0;
for(int i = 5; i <= n; i *= 5)aux1+=(n/i);
return aux1;
}
int main()
{
cin >> p;
long long st = 1,mid,dr = 100000000,aux1;
while(st <= dr)
{
mid = (dr - st)/2 + st;
aux1 = check(mid);
if (aux1 == p) rez = mid, dr = mid-1;
else if (aux1 > p) dr = mid - 1;
else st = mid + 1;
}
//if (rez == 100000010) cout << "-1";
cout << rez;
}
