Pagini recente » Cod sursa (job #2260735) | Cod sursa (job #2939670) | Cod sursa (job #2752787) | Cod sursa (job #3221229) | Cod sursa (job #1415739)
#include <cstdio>
#include <algorithm>
using namespace std;
#define inFile "fact.in"
#define outFile "fact.out"
long long getPow(int power, long long X) {
long long currPow = power;
long long nPow = 0;
for(; currPow <= X; currPow *= power)
nPow += X / currPow;
return nPow;
}
int main() {
FILE *in = fopen(inFile, "r");
FILE *out = fopen(outFile, "w");
int P, i;
long long sBeg, sMid, sEnd, lastFound, pow2, pow5, nZero;
fscanf(in, "%d", &P);
sBeg = 1;
sEnd = 1ll << 60;
lastFound = -1;
while(sBeg <= sEnd) {
sMid = (sBeg + sEnd) >> 1;
pow2 = getPow(2, sMid);
pow5 = getPow(5, sMid);
nZero = min(pow2, pow5);
if(nZero < P) sBeg = sMid + 1;
else if(nZero > P) sEnd = sMid - 1;
else sEnd = sMid - 1, lastFound = sMid;
}
fprintf(out, "%d\n", lastFound);
fclose(in);
fclose(out);
return 0;
}