Pagini recente » Borderou de evaluare (job #1330892) | Cod sursa (job #2853736) | Cod sursa (job #1931513) | Cod sursa (job #901713) | Cod sursa (job #353741)
Cod sursa(job #353741)
#include<cstdio>
#define maxim(a, b) (a>b?a:b)
long long p, x;
long long zero(long long n)
{
long long p5 = 5, r, suma = 0;
while(1)
{
r = n / p5;
if(r == 0) return suma;
suma += r;
p5 *= 5;
}
}
int qzero(int n)
{
return n / 5 + n / 25 + n / 125 + n / 625 + n / 3125 + n / 15625 + n / 78125;
}
void citeste()
{
FILE* fi = fopen("fact.in", "r");
fscanf(fi, "%d", &p);
fclose(fi);
}
void scrie()
{
FILE* fo = fopen("fact.out", "w");
fprintf(fo, "%d\n", x);
fclose(fo);
}
void rezolva()
{
long long li = 1;
long long ls = 100000000;
ls = ls * ls;
long long mij;
while(li < ls)
{
mij = (li + ls) / 2;
if(zero(mij) < p)
li = mij + 1;
else
ls = mij;
}
long long ind = maxim(li, ls) + 1000;
while(zero(ind) >= p)
{
x = ind;
ind--;
}
}
int main()
{
citeste();
rezolva();
scrie();
return 0;
}