Pagini recente » Cod sursa (job #1260871) | Cod sursa (job #1017396) | Cod sursa (job #1520344) | Cod sursa (job #1776310) | Cod sursa (job #1334247)
#include <stdio.h>
#include <stdlib.h>
int findTrailingZeros(long long n);
int calc(int n);
int main()
{
FILE* in = fopen("fact.in","r");
FILE* out = fopen("fact.out","w");
int p;
fscanf(in,"%d",&p);
int c;
int lo = 1;
int hi = 100000000;
int mid;
int found = 0;
while(lo<=hi)
{
mid = lo + (hi-lo)/2;
c = findTrailingZeros(mid);
if(c==p)
{
while(findTrailingZeros(mid)==p){
mid-=1;
}
printf("%d ",mid);
fprintf(out, "%d",mid);
found = 1;
break;
}
else if(c<p)
{
lo = mid+1;
}
else
{
hi = mid-1;
}
}
if(found==0)
{
fprintf(out, "%d",-1);
}
return 0;
}
int findTrailingZeros(long long n)
{
// Initialize result
long long count = 0;
int i=5;
// Keep dividing n by powers of 5 and update count
for (i=5; n/i>=1; i *= 5)
count += n/i;
return count;
}