У исполнителя Робот есть четыре команды перемещения (вверх, вниз, влево,
вправо). При выполнении каждой из них Робот перемещается на одну клетку в
соответствующем направлении в прямоугольном лабиринте. Для проверки
истинности условия отсутствия стены у клетки, в которой находится Робот,
используются команды: сверху свободно, снизу свободно, слева свободно, справа
свободно. Если Робот начнет движение в сторону находящейся рядом с ним стены, то
он разрушится, и выполнение программы прервется,
нач
пока <справа свободно> вправо
пока <сверху свободно> вверх
пока <слева свободно> влево
пока <снизу свободно> вниз
кон
Количество клеток в лабиринте, соответствующих требованию, что, выполнив
предложенную программу, Робот уцелеет и остановится в той же клетке, с которой он
начал движение, равно:
i - кол-во бит
N - мощность (кол-во всех возможных вариаций)
Корабль передаёт либо длинный, либо короткий значит может принимать всего 2 состояния. Он отправляет 6 сигналов (3 коротких 3 длинных) Значит код-во возможных вариаций расстановок этих сигналов будет равна
Подставим в формулу
Следовательно i = 6
Кол-во бит информации - 6
ответ: 6
///////////////////////////////////////////////////////
А вообще для таких задач я использую такую формулу
K - сколько всего может быть исходов, i - кол-во бит
Корабль может передавать либо короткий, либо длинный сигнал. Значит кол-во состояний - 2
Он передаёт 3 коротких и 3 длинных, значит всего - 3+3 = 6
кол-во всех возможных исходов при 6 сигналах и кол-во состояний будет равно
Если ты понимаешь суть логарифма, то ответ уже думаю тебе ясен, если нет, то читай дальше :)
Подставляем в нашу формулу кол-во возможных событий
логарифм по основанию a, это значит надо найти такою степень числа a, при возведении в которую получится число, которое в выражении логарифма, а так как мы в логарифме по основанию 2 возводим число 2, то тут и вычислять нечего. Просто пишем степень двойки.
Это число 6.
n = 10;
var
i, c: integer;
a, w: array[1..n] of integer;
begin
randomize;
writeln('Исходный массив:');
for i := 1 to n do
begin
a[i] := random(201) - 100;
write(a[i], ' ');
end;
writeln;
c := 0;
for i := 1 to n do
if a[i] > 0 then
begin
c := c + 1;
w[c] := a[i];
end;
writeln('Кол-во положительных элементов: ', c);
for i := 1 to n do
begin
if a[i] <= 0 then
begin
c := c + 1;
w[c] := a[i];
end;
end;
writeln('Результат:');
for i := 1 to c do
write(w[i], ' ');
end.