Имеет смысл воспользоваться методом "дихотомии" (деления пополам).
Если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере?
Поэтому принимаем такое решение. Мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. Затем задаем вопрос: загаданный ученик находится в первой кучке? По результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. Процесс повторяем пока не останется одна карточка. Аналогично поступаем с датами рождения.
Тогда количество вопросов определится, как степень числа 2, дающая число, не меньшее количества учеников (дней рождения).
2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов.
2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов.
В сумме потребуется задать не более 9+10 = 19 вопросов.
Конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
1)3,4*1024=3584 мегабайт
3584*1024=3670016 килобайт
3670016*1024=3758096384 байт
2)3758096384*8=30064771072 бит
3)В одном часе 60 минут , соответственно в двух часах 120 минут , значит надо 30064771072:120=250539758.933 бит
Очень легко: для схематического объяснения
без хорошей красочной рекламы не будет покупателей
в медицине к примеру нарисуют красивые и белые зубки и красочно оформят текст
в общем, для наглядного объяснения
//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
const
n = 10;
var
a: array[1..n] of integer;
i, j, c, nc, max, imax: integer;
p:BigInteger;
begin
// Заполним массив сл. числами
max := -MaxInt;
for i := 1 to n do
begin
a[i] := random(-100, 100);write(a[i]:4);
if abs(a[i]) > max then begin
max := a[i];imax := i;
end;
end;
writeln;
//1. Количество элементов массива, больших С.
writeln('Введите число "с"');readln(c);
for i := 1 to n do if a[i] > c then nc := nc + 1;
writeln('Элементов больше чем ', c, ' : ', nc);
//2. произведение элементов массива,
//расположенных после мак симального
//по модулю элемента
p := 1;
for i := imax + 1 to n do p := p * a[i];
writeln('Максимальный по модулю элемент находится на ', imax, ' месте');
writeln('Произведение элементов массива,расположенных после максимального по модулю элемента ', p);
//3. Преобразовать массив таким образом, чтобы сначала размещались все
//отрицательные элементы, а потом все положительные
for i := 1 to n - 1 do
for j := 1 to n - i do
if a[j] > a[j + 1] then begin
swap(a[j], a[j + 1]);
end;
writeln('Преобразованный массив :');
for i := 1 to n do write(a[i]:4);
end.
Тестовое решение:
-6 91 52 62 -28 -64 86 86 -91 -61
Введите число "с"
15
Элементов больше чем 15 : 5
Максимальный по модулю элемент находится на 2 месте
Произведение элементов массива,расположенных после максимального по модулю элемента -1246076928
Преобразованный массив :
-91 -64 -61 -28 -6 52 62 86 86 91