program project1;
var a:integer;
function min(a,b:integer):integer;
begin
if a>b then exit(b)
else exit(a);
end;
function eat(x:integer):integer;
var c,d:integer;
begin
if x=1 then exit(2);
c:=1;
d:=0;
while c<x do
begin
c:=c*2;
inc(d);
end;
if c-x=0 then exit(d);
exit(min(eat(c div 2)+eat(x-c div 2),eat(c)+eat(c-x)));
end;
begin
readln(a);
eat(a);
writeln(eat(a));
readln;
end.
输入:47
输出:
var a:integer;
function min(a,b:integer):integer;
begin
if a>b then exit(b)
else exit(a);
end;
function eat(x:integer):integer;
var c,d:integer;
begin
if x=1 then exit(2);
c:=1;
d:=0;
while c<x do
begin
c:=c*2;
inc(d);
end;
if c-x=0 then exit(d);
exit(min(eat(c div 2)+eat(x-c div 2),eat(c)+eat(c-x)));
end;
begin
readln(a);
eat(a);
writeln(eat(a));
readln;
end.
输入:47
输出: