Pagini recente » Cod sursa (job #2686645) | Cod sursa (job #2769897) | Cod sursa (job #3245514) | Cod sursa (job #2840543) | Cod sursa (job #1080971)
//
// main.c
// fact2
//
// Created by Alexandru Bâgu on 1/12/14.
// Copyright (c) 2014 Alexandru Bâgu. All rights reserved.
//
#include <stdio.h>
int fx(int n)
//fx(n) = n/5 + n/25 + n/125 + ...
{
int k = 5, ct = 0;
while(n >= k)
{
ct += n / k;
k *= 5;
}
return ct;
}
int bin_sea(int p)
{
int k = 1 << 30, i = 0, pMax = p * 5, zeros;
while(k >>= 1)
{
if(i + k < pMax)
{
zeros = fx(i + k);
if(zeros == p) return i + k;
else if(zeros < p) i += k;
}
}
return -1;
}
int main(int argc, const char * argv[])
{
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
int p, q;
scanf("%d", &p);
q = bin_sea(p);
while(fx(q) == p && q > 0) q--;
printf("%d", q + 1);
return 0;
}