Pagini recente » Cod sursa (job #3176895) | Cod sursa (job #2829511) | Cod sursa (job #1898505) | Cod sursa (job #1232360) | Cod sursa (job #472131)
Cod sursa(job #472131)
#include<stdio.h>
int z_i_f(int N)
{
int result = 0;
while(N != 0)
{
result += N/5;
N /= 5;
}
return result;
}
int main()
{
FILE* f = fopen("fact.in", "r");
unsigned long long int p;
fscanf(f, "%llu", &p);
if(p == 0)
{
f = fopen("fact.out", "w");
fprintf(f, "%d\n", 1);
fclose(f);
return 0;
}
int N = 0;
int l = 0;
int r = p * 10;
while(l < r)
{
int m = l + (r-l)/2;
int z = z_i_f(m);
//printf("[m %d z %d l %d r %d p %d]\n", m, z, l, r, p);
if(z == p)
{
while(z_i_f(m) == p)
{
N = m;
m--;
}
break;
}
else if(z > p)
{
r = m;
}
else
{
l = m + 1;
}
}
fclose(f);
f = fopen("fact.out", "w");
fprintf(f, "%d", N == 0?-1:N);
fclose(f);
return 0;
}