Имеет смысл воспользоваться методом "дихотомии" (деления пополам). если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере? поэтому принимаем такое решение. мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. затем задаем вопрос: загаданный ученик находится в первой кучке? по результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. процесс повторяем пока не останется одна карточка. аналогично поступаем с датами рождения. тогда количество вопросов определится, как степень числа 2, число, не меньшее количества учеников (дней рождения). 2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов. 2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов. в сумме потребуется задать не более 9+10 = 19 вопросов. конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
ckati
03.07.2022
Const n = 5; var a: array[1..n] of integer; i, b: integer; begin for i : = 1 to n do begin a[i] : = random(0, 10); write(a[i], ' '); end; writeln(); read(b); for i : = 1 to n do write(a[i] - b, ' '); end.const n = 5; var a: array[1..n] of integer; i, p: integer; begin p : = 1; for i : = 1 to n do begin a[i] : = random(0, 10); write(a[i], ' '); if(odd (a[i])) then p *= a[i]; end; writeln(); writeln(p); end.