Pagini recente » Cod sursa (job #121477) | Cod sursa (job #2056111) | Cod sursa (job #1707396) | Cod sursa (job #2430047) | Cod sursa (job #658121)
Cod sursa(job #658121)
#include <stdio.h>
const long long cStupidHighNumber = 10000000000;
long GetZeroesFromFactorial(long long x){
long long counter = 0;
while(x > 0){
counter += x = x/5;
}
return counter;
}
long long FindFactorialNumberContainingZeroes(int zeroes){
long long min = 0;
long long max = cStupidHighNumber;
long long tempZeroes;
long long med;
if(zeroes == 0)
return 1;
//some binary s#!&@y search
while(min<max){
med = (min+max)/2;
tempZeroes = GetZeroesFromFactorial(med);
if(tempZeroes == zeroes){
return med - med%5;
}
if(tempZeroes > zeroes){
max = med;
}
if(tempZeroes < zeroes){
min = med + 1;
}
}
return -1;
}
int main(){
FILE *fin = fopen("fact.in","r");
FILE *fout = fopen("fact.out","w");
int p;
long n;
while(!feof(fin)){
fscanf(fin,"%d", &p);
fprintf(fout, "%lld\n", FindFactorialNumberContainingZeroes(p));
}
return 0;
}