Программа написана совершенно правильно. Единственное, что могу предположить - это несоответствие нумерации массива у человека и компьютера. Люди привыкли нумеровать от единицы, а значит в массиве из пяти элементов три с нечетными номерами и два с четными. В программах нумерация массива обычно от нуля, т.е. в массиве из пяти элементов три четных и два нечетных. С точки зрения компьютера программа выдает верный результат. Для получения результата с точки зрения человека нужно строку
if ((A[i] > 0) && ( i%2 == 0))
заменить на
if ((A[i] > 0) && ( i%2 == 1))
В двоичном коде бит может кодировать только два значения (допустим, "да" или "нет", или, по условию задачи - первые числа из требуемых рядов: 1 и 2 или 0 и 1). Два бита кодируют 4 значения, три бита - 8. И так далее. Общая формула выглядит так: N=2^m Где N - количество независимых кодируемых значений, m - количество разрядов двоичного кодирования.
Имеем в первом варианте 32 значения, во втором 33. Подставляем данные: 2^5=32, то есть 32 значения (от 1 до 32) можно закодировать с помощью 5 бит. Зато для 33 значений ёмкости пяти бит уже не хватит. Значит, ответ неверный. Проверяем: log2(33)=5,04439 (по таблице логарифмов с основанием 2), округляем вверх до целого, получаем 6.
Попробуем решить эту задачу:
Ну проще всего сделать так: Обозначим арбузы буквами АБВГ
1) Будем взвешивать потихонечку. А с Б взвесим. Если А тяжелее, то А взвесим С В, если опять тяжелее А, то А взвесим с В, если опять а тяжелее, то а на последнем месте и у нас уже было три взвешивания. Теперь берем арбуз б взвешиваем его с в, если б тяжелее, то он на предпоследнем месте, теперь остается взвесить в с г, если в тяжелее в, то он второй по счету, а г самый легкий. Получилось как раз пять взвешиваний, меньше не получается. Ну, а в зависимости от того какие ситуации получаются будем идти по разным путям.
А с Б взвесим. Если Б тяжелее, то Б взвесим С В, если опять тяжелее Б, то Б взвесим с В, если опять Б тяжелее, то Б на последнем месте и у нас уже было три взвешивания. Теперь берем арбуз А взвешиваем его с в, если А тяжелее, то он на предпоследнем месте, теперь остается взвесить В с Г, если в тяжелее В, то он второй по счету, а Г самый легкий. Получилось как раз пять взвешиваний, меньше не получается. Ну и так далее рассуждая всегда за пять взвешиваний можно определить самый легкий арбуз и так далее.
Допустим, 1 игрок загадал 1
2 игрок называет 128, получает ответ "меньше". Это первый бит.
Он называет 64 (это второй бит), потом 32, потом 16, потом 8, потом 4, потом 2, потом 1.
Всего он получает 8 бит информации.
Предположим, что все студенты получают только одну оценку, например, 3.
Тогда сообщение "Студент получил 3" несет 0 бит информации, потому что и без этого сообщения ясно, что он может получить только 3, и ничего больше.
Допустим, студент может получить одну из двух оценок, например, 3 или 4.
Тогда сообщение "Студент получил 3" несет 1 бит информации, их можно условно обозначить "0", если оценка 3 и "1", если 4.
Если 4 разных оценки, 4 = 2^2, то сообщение несет 2 бита информации. Если бы разных оценок было 8, то было бы 3 бита.