Pagini recente » Cod sursa (job #2519704) | Cod sursa (job #1145037) | Cod sursa (job #3001590) | Cod sursa (job #2512952) | Cod sursa (job #2978699)
#include <stdio.h>
#include <stdlib.h>
#define MARE 500000000
long long cinci[15], mij, ls, ld, p, i, x, sw;
FILE *f=fopen("fact.in", "r"), *g=fopen("fact.out", "w");
void citeste(void)
{
fscanf(f, "%lld", &p);
fclose(f);
}
void valori(void)
{
cinci[1]=5;
cinci[2]=25;
cinci[3]=125;
cinci[4]=625;
cinci[5]=3125;
cinci[6]=15625;
cinci[7]=78125;
cinci[8]=390625;
cinci[9]=1953125;
cinci[10]=9765625;
cinci[11]=48828125;
cinci[12]=244140625;
}
long long mijloc(void)
{
long long s=0;
for (i=1;i<=12;i++)
s+=mij/cinci[i];
return s;
}
void binary(void)
{
ls=1;
ld=MARE;
mij=(ls+ld)/2;
while (ls<ld)
{
x=mijloc();
if (x==p)
{
sw=1;
break;
}
else
if (x<p)
ls=mij+1;
else
ld=mij-1;
mij=(ls+ld)/2;
}
if (sw)
mij-=mij%5;
else
{
fprintf(g, "-1");
exit(0);
}
}
void tipareste(void)
{
fprintf(g, "%lld", mij);
fclose(g);
}
int main(void)
{
citeste();
if (p==0)
fprintf(g, "1");
else
{
valori();
binary();
tipareste();
}
return 0;
}