Pagini recente » Cod sursa (job #1144814) | Cod sursa (job #1882922) | Cod sursa (job #2149083) | Cod sursa (job #1301117) | Cod sursa (job #3174840)
#include <iostream>
#include <cmath>
#include <fstream>
std::ifstream fin("fact.in");
std::ofstream fout("fact.out");
unsigned long long Binary_Exp(unsigned long long a, unsigned long long b) {
unsigned long long thing = 1;
while (b>0){
if (b&1) {thing*=a;}
a*=a;
b >>=1;
}
return thing;
}
unsigned long long Zero_La_Final_Fact(unsigned int n) {
if (n<5) {
return 0;
}
unsigned long long s=0,p=1;
while (Binary_Exp(5,p)<=n){
s+=std::floor(n/Binary_Exp(5,p));
p++;
}
return s;
}
int main()
{
unsigned int p;
fin >> p;
if (p>24999999) {
fout << -1;
} else {
unsigned int r=24999999,l=1,probe=(l+r)/2;
while (l<r) {
if (Zero_La_Final_Fact(probe)==p) {
fout << probe;
break;
} else if( Zero_La_Final_Fact(probe)<p) {
l=probe+1;
} else if ( Zero_La_Final_Fact(probe)>p) {
r=probe-1;
}
}
}
return 0;
}