program NearestPowerOf2;
function RoundToNearestPowerOf2(n: Word): Word;
var
prevPower, nextPower: Word;
begin
if n = 0 then
RoundToNearestPowerOf2 := 0
else
begin
prevPower := 1;
while prevPower * 2 <= n do
prevPower := prevPower * 2;
nextPower := prevPower * 2;
if (n - prevPower) < (nextPower - n) then
RoundToNearestPowerOf2 := prevPower
else
RoundToNearestPowerOf2 := nextPower;
end;
end;
var
num, result: Word;
begin
num := 37;
result := RoundToNearestPowerOf2(num);
writeln('Nearest power of 2: ', result);
end.
(*
run:
Nearest power of 2: 32
*)