a: array [1..20] of integer; {объявляем целочисленный массив на 20 элементов}
i, min, t, m: integer; {i - счетчик, min - минимум, t, m - временные переменные}
begin
{рандом 20 чисел в диапазоне [-20;12]}
randomize;
for i:=1 to 20 do
a[i]:=random(33)-20;
min:=a[1]; //присваиваем минимуму первый элемент.
{цикл начинается с 2, чтобы не делать лишнюю итерацию}
for i:=2 to 20 do
begin
{если минимум больше текущего значения элемента массива, то минимуму присваивается это значение и запоминаем его индекс, чтобы в дальнейшем поменять минимальный элемент с последним.}
В данном случае наилучшей является стратегия половинного деления. Сначала определяем страницу. Будем делить каждый раз количество страниц, содержащих нужную, пополам. Первый вопрос: "Нужная страница имеет номер больше 40?" Если да, то рассматриваем страницы с 41 по 80, если нет - то страницы с 1 до 40. Второй вопрос для случая, когда номер страницы был больше 40 будет выглядеть так: "Нужная страница имеет номер больше 60?". А если номер страницы был не больше 40, то спрашиваем "Нужная страница имеет номер больше 20?". При такой схеме количество необходимых вопросов будет равно 7 ( 2⁶<80<2⁷).
Найдя нужную страницу по такой же схеме ищем номер слова (от 1 до 50). Поскольку 2⁵<50<2⁶, то потребуется задать 6 вопросов.
7 вопросов для определения номера страницы и 6 для определения номера слова на ней - всего 13 вопросов. Поэтому за 12 вопросов отгадать слово не удастся.
В то же время, если бы можно было пронумеровать все слова от 1 до 4000 (50х80=4000) и задавать вопросы по порядковым номерам слов, то 12 вопросов хватило бы (2¹¹<4000<2¹²)
1. Допустим, Андрей правильно назвал цвет - синий. Тогда он неверно назвал марку и автомобиль - не мерседес. Тогда Егор, сказавший что автомобиль не синий, солгал и автомобиль должен быть марки Форд. Саша должен быть прав хотя бы в одном высказывании, но сказанное им не совпадает ни с цветом автомобиля (синий), ни с маркой (Форд). Отсюда следует, что автомобиль не синий. 2. У нас по условию есть только два цвета автомобиля - синий и черный. И поскольку автомобиль не синий, то он может быть только черным. 3. Саша правильно назвал цвет автомобиля, тогда его марка - не Джип. Андрей неверно назвал цвет автомобиля, тогда марка автомобиля - Мерседес. Егор сказал, что автомобиль не синий и это правда. Он также сказал, что автомобиль марки Форд - и это неправда.
Язык: Pascal.
var
a: array [1..20] of integer; {объявляем целочисленный массив на 20 элементов}
i, min, t, m: integer; {i - счетчик, min - минимум, t, m - временные переменные}
begin
{рандом 20 чисел в диапазоне [-20;12]}
randomize;
for i:=1 to 20 do
a[i]:=random(33)-20;
min:=a[1]; //присваиваем минимуму первый элемент.
{цикл начинается с 2, чтобы не делать лишнюю итерацию}
for i:=2 to 20 do
begin
{если минимум больше текущего значения элемента массива, то минимуму присваивается это значение и запоминаем его индекс, чтобы в дальнейшем поменять минимальный элемент с последним.}
if min > a[i] then
begin
min:=a[i];
m:=i;
end;
end;
{выводим старый массив}
Writeln('Старый массив:');
for i:=1 to 20 do
writeln(a[i]);
{меняем местами последний элемент с минимальным}
t:=a[20];
a[20]:=min;
a[m]:= t;
{выводим новый массив}
Writeln('Новый массив:');
for i:=1 to 20 do
writeln(a[i]);
end.