Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)
Например, загадано 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 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).
Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.
Объяснение:
1) int x = 5;
x++; до х додаєтся 1
х=6
41) int x = 5;
x--; від х віднімається 1
х=4
42) int x = 5;
x += 3; до х додаєтся 3
х=8
43) int x = 5;
x -= 3; від х віднімається 3
х=2
44) int x = 5;
x *= 3; х перемножають на 3
х=15
45) int x = 6;
x /= 3;
х=2
46) int x = 5; int y;
y = x % 2;
y=1
47) int x = 5; int y;
y = abs( x ); модуль числа (його позитивне значення)
у=5
48) int x = -5; int y;
y = abs( x ); модуль числа (його позитивне значення)
у=5
49) float x = 4; float y;
y = sqrt( x ); sqrt( x ); це √х
у=2
50) float x = 3; float y;
y = pow( x, 2 ); домножає х на себе 2 рази тобто возводиь у другу ступінь
y = х*х
y = 3*3
y = 9
51) float f = 32.51;
printf("%2.1f", f); не впевнений
32.5
52) int x = 4; int y;
if(x 4) y = x; тут якась помилка якщо в дужках повинно бути (x==4) то умова була такою якщо х дорівнює 4 то y = x, тобто у теж дорівнює 4 інакше y дорівнює х помножений на 2
else y = 2*x;
y = 4