Pagini recente » Cod sursa (job #2735330) | Cod sursa (job #471819) | Cod sursa (job #712954) | Cod sursa (job #491876) | Cod sursa (job #895896)
Cod sursa(job #895896)
#include <cstdio>
using namespace std;
long p,px,pw,v[14];
long long n;
int bsearchMin(long in,long fn,long v[],long val) {
long mid;
if(v[fn]<=val)
return fn;
else
if(val<v[1])
return 0;
while(in<=fn) {
mid=(fn-in)/2+in;
if(v[mid]<=val&&val<v[mid+1])
return mid;
else
if(val<v[mid])
fn=mid-1;
else
in=mid+1;
}
return 0;
}
int lgpow(long base,long pw) {
long rez=1;
while(pw) {
if(pw%2)
rez*=base;
base*=base;pw/=2;
}
return rez;
}
int main()
{
freopen("fact.in","rt",stdin);
freopen("fact.out","wt",stdout);
scanf("%ld",&p);
if(p==0) {
printf("1\n");
return 0;
}
pw=1;
for(long i=1;i<=12;i++) {
v[i]=pw+i*(i-1)/2;
pw*=5;
}
px=bsearchMin(1,12,v,p);
n=lgpow(5,px)+(p-v[px])*5;
printf("%lld\n",n);
return 0;
}