0⁶1⁵1⁴1³0²1¹1⁰₂ = 0 · 2⁶ + 1 · 2⁵ + 1 · 2⁴ + 1 · 2³ + 0 · 2² + 1 · 2¹ + 1 · 2⁰ = 0 + 32 + 16 + 8 + 0 + 2 + 1 = 59₁₀
10 → 259 / 2 = 29 (1), где число в скобках - это остаток
29 / 2 = 14 (1)
14 / 2 = 7 (0)
7 / 2 = 3 (1)
3 / 2 = 1 (1)
1 / 2 = 1 (1), нельзя поделить 1 на 2 без получения дробной части, поэтому в остатке остается та единица, которую мы делили на 2
Снизу вверх восстанавливаем цепочку двоичного кода:
111011₂
Объясняю, почему мы не получили нолик вначале.. Нолик добавляется в запись в основном, чтобы дополнить двоичный код до 8 бит, но в твоем случае это 7 бит. Это ни на что не влияет.
max_length = 10;
type
arr = array [0..max_length, 0..max_length] of byte;
var
a: arr;
i, j, n, m, k, x, y: byte;
c: char;
f: text;
//procedure PrintMatrix(a: arr);
//begin
// for var i := 0 to max_length do
// begin
// writeln;
// for var j := 0 to max_length do
// write(a[i, j], ' ');
// end;
// writeln;
//end;
procedure labirint(i, j: byte);
begin
if (i <= n) and (i >= 0) and (j <= m) and (j >= 0) and (a[i, j] = 0) then begin
a[i, j] := 1;
k := k + 1;
labirint(i, j - 1);
labirint(i, j + 1);
labirint(i - 1, j);
labirint(i + 1, j);
end;
end;
begin
Assign(f, 'input.txt');
Reset(f);
readln(f, n, m);
for i := 0 to n do
begin
for j := 0 to m do
begin
read(f, c);
case c of
'x': a[i, j] := 2;
'.': a[i, j] := 0;
'+':
begin
x := i;
y := j;
a[i, j] := 0;
end;
end;
end;
readln(f);
end;
Close(f);
// PrintMatrix(a);
labirint(x, y);
writeln(k);
// PrintMatrix(a);
end.
инструментарий для дебага оставила. Проверяйте значение символов перед стартом