Спираль из центра массива по часовой стрелке (для нечетных n):
const n=7;
var a:array[1..n,1..n] of integer;
i,j,d,k,l,m:integer;
begin
k:=n*n;
i:=n div 2 + 1; j:=n div 2 + 1;
a[i,j]:=k;
d:=1;
for m:=1 to n div 2 do
begin
for l:=1 to d do
begin k:=k-1; j:=j+1; a[i,j]:=k; end;
for l:=1 to d do
begin k:=k-1; i:=i+1; a[i,j]:=k; end;
d:=d+1;
for l:=1 to d do
begin k:=k-1; j:=j-1; a[i,j]:=k; end;
for l:=1 to d do
begin k:=k-1; i:=i-1; a[i,j]:=k; end;
d:=d+1;
end;
d:=d-1;
for l:=1 to d do
begin k:=k-1; j:=j+1; a[i,j]:=k; end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
end.
Результат:
<span> 7 6 5 4 3 2 1
8 29 28 27 26 25 24
9 30 43 42 41 40 23
10 31 44 49 48 39 22
11 32 45 46 47 38 21
12 33 34 35 36 37 20
13 14 15 16 17 18 19</span>
Закодируем буквы на цифры таким образом.
А - 0
П - 1
Р - 2
С - 3
У - 4
Если возникает вопрос почему именно так кодируем, то смотрим на начало списка, и первая буква а, потом п и т.д, поэтому именно так кодируем.
Преобразуем начало списка:
1. 0000
2. 0001
3. 0002
4. 0003
5. 0004
6. 0010
Первое слово, в котором нет буквы А - это слово ПППП
Т.к у нас от 0 до 4, то это пятиричная система счисления.
ПППП - 1111 по основанию 5. Переводим в десятичную 156. Но номер этой ячейки больше самой ячейки на 1. Значит будет стоять под номером 157 - это и есть ответ
У меня получилось m=-4, k=10
Просто подставляй значения и проверяй условие, если условие верно то m будет=значению Д под этим номером.
1)Берем Д(1)=6 проверяем 6 меньше 2*6 ДА
m присваиваем значение Д(1),т.е 6
2)Берем Д(2)=-1 Сравниваем -1 меньше 2*6 ДА
<span>m присваиваем значение Д(2),т.е -1 и Т,Д до конца</span>
ответ - такое число х в битах, что 2 ^ х > 80
=> х = 7 бит