Pagini recente » Cod sursa (job #2533955) | Cod sursa (job #2883216) | Cod sursa (job #280657) | Cod sursa (job #2658430) | Cod sursa (job #474500)
Cod sursa(job #474500)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAX 1000001
#define LIM 10000000
int ciur[MAX];
long long p, i, aux;
long long st, dr, mijl, nr = LIM;
int cinci, doi;
void descompunere (long long x)
{
for (i=2; i<=x; ++i)
{
aux = i;
if (aux % 2 != 0 && aux % 5 != 0)
continue;
while (aux % 2 == 0 && aux > 1)
{
doi ++;
aux /= 2;
}
while (aux % 5 == 0 && aux > 1)
{
cinci ++;
aux /= 5;
}
}
}
int main ()
{
FILE *f = fopen ("fact.in","r");
FILE *g = fopen ("fact.out","w");
fscanf (f,"%lld", &p);
st = 1;
dr = LIM;
while (st <= dr)
{
mijl = (st + dr) / 2;
doi = cinci = 0;
descompunere (mijl);
if (min (doi, cinci) == p)
{
if (nr > mijl)
nr = mijl;
dr = mijl - 1;
}
else if (min (doi, cinci) < p)
st = mijl + 1;
else
dr = mijl - 1;
}
fprintf (g, "%lld", nr);
fclose (g);
fclose (f);
return 0;
}