Pagini recente » Cod sursa (job #2233202) | Cod sursa (job #1164088) | Cod sursa (job #1025590) | Cod sursa (job #1969890) | Cod sursa (job #1926841)
#include <iostream>
#include <fstream>
using namespace std;
using ull = unsigned long long;
ull ZFACT(ull nr){
int num = 0;
for(int i = 5; nr/i; i *= 5)
num += nr/i;
return num;
}
ull caut(ull p){
ull st = 0, dr = 1ULL<<63, m;
while(st <= dr){
m = (st + dr)/2;
if(ZFACT(m) < p) st = m + 1;
else dr = m - 1;
}
return (m % 5)? m + 1 : m;
}
int main(){
ull p;
ifstream in ("fact.in");
ofstream out ("fact.out");
in >> p;
if(p == 0) {out << 1; return 0;}
ull sol = caut(p);
out << ((ZFACT(sol) == p)? sol : -1);
return 0;
}