Pagini recente » Cod sursa (job #3163427) | Diferente pentru heapuri intre reviziile 47 si 48 | Rating Rusan Razvan (Plungerdz) | Diferente pentru problema/ciclueuler intre reviziile 2 si 1 | Cod sursa (job #2451736)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long long int factorial(unsigned long long p) {
unsigned long long nrz = 0;
while (p >= 5) {
nrz += p / 5;
p /= 5;
}
return nrz;
}
int main() {
unsigned long long p;
fin >> p;
unsigned long long int b = 9223372036; //
unsigned long long int a = 0;
unsigned long long int mid; // maybe wrtong;
while (b >= a) {
mid = (a + b) / 2;
if (p > factorial(mid)) {
a = mid + 1;
}
else {
b = mid - 1;
}
}
if (factorial(mid) != p)
fout << "-1";
else
fout << mid;
return 0;
}