Pagini recente » Cod sursa (job #2642675) | Cod sursa (job #1705242) | Cod sursa (job #869915) | Cod sursa (job #648455) | Cod sursa (job #2081717)
#include <stdio.h>
#include <cmath>
#include <climits>
using namespace std;
FILE* fin;
FILE* fout;
unsigned long long P;
unsigned long long high, low, mid, n;
unsigned long long getZeroNr(unsigned long long n)
{
unsigned long long retval = 0;
for(unsigned long long i = 5; i <= n; i *= 5)
retval += n / i;
return retval;
}
int main()
{
fin = fopen("fact.in", "r");
fout = fopen("fact.out", "w");
fscanf(fin, "%llu", &P);
low = 1;
high = 10000000;
if(P == 0)
{
fprintf(fout, "1");
return 0;
}
while(low != high)
{
mid = (low + high) / 2;
if(getZeroNr(mid) == P)
{
n = mid;
break;
}
if(getZeroNr(mid) < P)
low = mid + 1;
else high = mid;
printf("Low: %llu, High: %llu\n", low, high);
}
if(n != 0)
fprintf(fout, "%llu", n - n % 5);
else fprintf(fout, "-1");
return 0;
}