Pagini recente » Cod sursa (job #1310647) | Cod sursa (job #1125106) | Cod sursa (job #988141) | Cod sursa (job #1422575) | Cod sursa (job #2611866)
#include<cstdio>
#define MAX_RIGHT 0x7fffffff
using namespace std;
inline int f(int n)
{
int nr, i;
nr = 0; i = 5;
while(n/i >= 1)
{
nr += n / i;
i *= 5;
}
return nr;
}
int binarySearch(int x)
{
int left = 1, right = MAX_RIGHT, mid, val;
while(left <= right)
{
mid = left + (right-left)/2;
val = f(mid);
if(val == x)
{
while(f(mid-1) == x && mid-1 > 0) mid--;
return mid;
}
else if(val > x)
right = mid - 1;
else left = mid + 1;
}
return -1;
}
int main()
{
int P;
FILE *fin, *fout;
fin = fopen("fact.in","r");
fout = fopen("fact.out","w");
fscanf(fin,"%d",&P);
fprintf(fout,"%d\n",binarySearch(P));
fclose(fin);
fclose(fout);
return 0;
}