Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)
Например, загадано 50
Последовательность
32 64/2 больше
48 (32+64)/2 больше
56 (48+64)/2 меньше
52 (48+56)/2 меньше
50 (48+52)/2 попал
Теперь о задаче. Вопрос очень некорректный, если бы он звучал, как сколько попыток нужно сделать, чтобы угадать? , то решение простое
64 = 2^6, поэтому нужно 6 попыток 6 = 110b, значит 3 бит достаточно, чтобы в них разместить это количество попыток.
НО в задаче вопрос-то другой! Потому что в процессе отгадывания на каждом шаге нужно знать 1. Концы отрезка, 2. ответ
Концы это 6 бит и 6 бит +ответ 1 бит, итого 13 бит на шаг *6 = 78 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).
Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.
Объяснение:
var i,n:integer; a:array[1..100]of integer;
begin
write('Введите размер массива: '); readln(n);
writeln('Введите значения элементов массива, разделяя их пробелами');
for i:=1 to n do read(a[i]); readln;
for i:=1 to n do write(a[ i]:8); writeln;
for i:=n downto 1 do write(a[i]:8); writeln;
writeln('Для выхода нажмите Enter'); readln
end.
2)
var i,n:integer; a:array[1..100]of integer;
begin
write('Введите размер массива: '); readln(n);
writeln('Введите значения элементов массива, разделяя их пробелами');
for i:=1 to n do read(a[ i]); readln;
for i:=1 to n do if a[i]<0 then write(i:2,a[i]:8); writeln;
writeln('Для выхода нажмите Enter'); readln
end.
3)
var i,n:integer; a:array[1..100]of integer;
begin
write('Введите размер массива: '); readln(n);
writeln('Введите значения элементов массива, разделяя их пробелами');
for i:=1 to n do read(a[i]); readln;
for i:=1 to n do if not odd(i) then write(a[i]:8); writeln;
writeln('Для выхода нажмите Enter'); readln
end.
4)
var i,n,s:integer; a:array[1..100]of integer;
begin
write('Введите размер массива: '); readln(n);
writeln('Введите значения элементов массива, разделяя их пробелами');
for i:=1 to n do read(a[i]); readln;
for i:=1 to n do write(a[i]:8); writeln;
s:=0; for i:=1 to n do s:=s+a[i]; writeln('Sum=',s); ;
writeln('Для выхода нажмите Enter'); readln
end.