Pagini recente » Cod sursa (job #841529) | Cod sursa (job #224459) | Cod sursa (job #138473) | Cod sursa (job #3173212) | Cod sursa (job #68398)
Cod sursa(job #68398)
const c1=4;
c2=44;
c3=284;
c4=1644;
c5=9044;
c6=48524;
c7=255724;
c8=1334924;
c9=6898724;
c10=35567724;
c11=181432124;
var p,max,min,aux,auxaux:longint;
f,g:text;
ok:boolean;
a:array [1..3] of longint;
function nrzero (z:longint):longint;
var coef,nrz:longint;
begin
if z>24
then
begin
coef:=1;
nrz:=c1;
end;
if z>124
then
begin
coef:=coef+1;
nrz:=c2;
end;
if z>624
then
begin
coef:=coef+1;
nrz:=c3;
end;
if z>3124
then
begin
coef:=coef+1;
nrz:=c4;
end;
if z>15624
then
begin
coef:=coef+1;
nrz:=c5;
end;
if z>78124
then
begin
coef:=coef+1;
nrz:=c6;
end;
if z>390624
then
begin
coef:=coef+1;
nrz:=c7;
end;
if z>1953124
then
begin
coef:=coef+1;
nrz:=c8;
end;
if z>9765624
then
begin
coef:=coef+1;
nrz:=c9;
end;
if z>48828124
then
begin
coef:=coef+1;
nrz:=c10;
end;
if z>244140624
then
begin
coef:=coef+1;
nrz:=c11;
end;
z:=z-nrz;
nrz:=nrz+(coef*(z div 5));
nrzero:=nrz;
end;
begin
assign (f,'fact.in');
assign (g,'fact.out');
reset (f);
rewrite (g);
readln (f,p);
min:=1;
max:=maxlongint;
ok:=true;
while ok do
begin
auxaux:=nrzero(trunc((min/2)+(max/2)));
if p<auxaux
then
begin
max:=trunc((min/2)+(max/2));
a[3]:=a[2];
a[2]:=a[1];
a[1]:=max;
if a[1]=a[3]
then
ok:=false;
end;
if p>auxaux
then
begin
min:=trunc((min/2)+(max/2));
a[3]:=a[2];
a[2]:=a[1];
a[1]:=min;
if a[1]=a[3]
then
ok:=false;
end;
if p=auxaux
then
begin
writeln (g,trunc((min/2)+(max/2)));
ok:=false;
auxaux:=-1;
end;
end;
if auxaux<>-1
then
writeln (g,'-1');
close(f);
close(g);
end.