Pagini recente » Cod sursa (job #677582) | Cod sursa (job #2493600) | Cod sursa (job #1242906) | Cod sursa (job #1052283) | Cod sursa (job #284718)
Cod sursa(job #284718)
#include <stdio.h>
#define IN "fact.in"
#define OUT "fact.out"
FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");
using namespace std;
long long int n;
long long int sol,solutie;
int sw=1;
inline void caut(long long int,long long int);
inline long long int cate(long long int);
int main()
{
fscanf(fin,"%lld",&n);
fclose(fin);
if(n==0)
{
fprintf(fout,"1\n");
fclose(fout);
return 0;
}
else
if(n==1 || n==2 || n==3 || n==4)
{
fprintf(fout,"%d\n",n*5);
fclose(fout);
return 0;
}
sol=n*5; /// maxim
caut(5,sol);
if(sw==1)
fprintf(fout,"%lld\n",solutie);
else
fprintf(fout,"-1\n");
fclose(fout);
return 0;
}
inline void caut(long long int st,long long int dr)
{
long long int med=(st+dr)/2;
med=med-med%5;
long long int c=cate(med);
if(st>=dr || dr-st==5)
{
sw=0;
return;
}
if(c<n)
caut(med,dr);
else
if(c>n)
caut(st,med);
else
if(c==n)
{
solutie=med;
return;
}
}
inline long long int cate(long long int val)
{
long long int c=0;
long long int p=5;
long long int rez=val/p;
while(rez)
{
c+=rez;
p*=5;
rez=val/p;
}
return c;
}