program LongestZeroes;
function LongestConsecutiveZeroes(n: integer): integer;
var
maxCount, currentCount: integer;
begin
maxCount := 0;
currentCount := 0;
while n > 0 do
begin
if (n and 1) = 0 then // Check if the least significant bit is 0
begin
currentCount := currentCount + 1;
// Update maxCount if currentCount is greater
if currentCount > maxCount then
maxCount := currentCount;
end
else
currentCount := 0; // Reset count when a 1 is encountered
n := n shr 1; // Right shift the number
end;
LongestConsecutiveZeroes := maxCount;
end;
var
num: integer;
begin
num := 11298; // 0010 1100 0010 0010
writeln('Longest consecutive zeroes: ', LongestConsecutiveZeroes(num));
end.
(*
run:
Longest consecutive zeroes: 4
*)