Мистер фокс показывает фокус лесным зверям. он предлагает каждому из них загадать натуральное число от 1 до 35. после чего мистер фокс называет набор из нескольких чисел (возможно, что в наборе только одно число) и просит тех зверей, кто услышал свое число, поднять лапу. затем мистер фокс называет еще какой-то набор натуральных чисел и опять просит тех, кто услышал свое число, поднять лапу. в некоторый момент фокс понимает, кто что загадал и сообщает загаданные числа зверям. за какое наименьшее количество таких операций мистер фокс точно определит, кто какое число загадал? сколько было лесных зверей на представлении – в точности неизвестно.
Пример 1:
i:=5;
while i<=4 do begin writeln('Привет'); i:=i-1; end;
Цикл не сработает ни разу, т.к. условие с самого начала неверное!
Пример 2:
i:=5;
while i<=5 do begin writeln('Привет'); i:=i-1; end;
Условие верное, программа "заходит в цикл", выполняет вывод текста, а затем уменьшает значение i на 1, т.е. i=4. Далее идет автоматическая проверка условия цикла, и оно снова верное: 4<=5!
Идет снова выполнение всех операторов цикла, и опять уменьшение i на 1, то есть i=3. И снова условие цикла верное: 3<=5!
И так далее. Теперь каждое следующее значение параметра i меньше предыдущего, а значит, и условие цикла всегда верное! Цикл никогда не остановится!
Пример 3:
i:=5;
while i<=6 do begin writeln('Привет'); i:=i-1; end;
И даже если вместо многоточия поставить число более 5, получим аналогичный результат: условие верное, программа "заходит в цикл", выполняет вывод текста, а затем уменьшает значение i на 1, т.е. i=5. Далее идет автоматическая проверка условия цикла, и оно снова верное: 5<=5!
Идет снова выполнение всех операторов цикла, и опять уменьшение i на 1, то есть i=4. И снова условие цикла верное: 4<=5!
И так далее. Теперь каждое следующее значение параметра i меньше предыдущего, а значит, и условие цикла всегда верное! Цикл никогда не остановится!
Возможно, ошибка в условии цикла? Если записать while i>=3 do..., то цикл сработает 3 раза: при i, равном 5, 4, 3. Либо неверно указано действие в цикле: i:=i-1. Если записать i:=i+1, а вместо многоточия поставить i<=7, то цикл также сработает ровно 3 раза, т.к. i будет менять свое значение 5, 6, 7.
Количество бит на символ i определим из формулы N=2^i
i=㏒₂N= ㏒₂36= 5,17
Округляем в большую сторону до 6 бит, потому что 5 бит на символ нам будет не хватать для кодирования 36 символов (2^5=32)
На один номер будет приходиться 5*6= 30 бит информации.
30 бит/8= 3,75 байт. Опять округляем в большую сторону до 4 байт, чтобы в соответствии с условиями задачи получить целое количество байт.
Тогда для кодирования 40 автомобильных номеров нам понадобится:
40*4=160 байт
ответ: 160 байт