Pagini recente » Cod sursa (job #638854) | Cod sursa (job #912172) | Cod sursa (job #3342519) | Cod sursa (job #3342526) | Cod sursa (job #970614)
Cod sursa(job #970614)
#include <iostream>
#include <fstream>
using namespace std;
long long z, n;
bool DEBUG = false;
void print(){
cout << "z: " << z << " n: " << n << endl;
}
void read(){
ifstream fi("fact.in");
fi >> z;
fi.close();
}
void write(){
ofstream fo("fact.out");
fo << n;
fo.close();
}
long long zeroN(long long n){
long long z = 0;
while (n/5!=0) {
z += n / 5;
n = n / 5;
}
return z;
}
long long findN(long long estStart, long long estEnd){
if (estEnd == 0){
return 1;
}
if (estEnd - estStart < 2){
return -1;
}
int estMidd = estStart + (estEnd - estStart) / 2;
int estZ = zeroN(estMidd);
if (estZ < z){
return findN(estMidd, estEnd);
} else if (estZ > z){
return findN(estStart, estMidd);
} else {
estMidd -= estMidd % 5;
return estMidd;
}
}
void compute(){
long long estStart = 4 * z;
long long estEnd = 6 * z;
n = findN(estStart, estEnd);
if(DEBUG) print();
}
int main(void){
read();
compute();
write();
return 0;
}