Основная загвоздка состоит в том, чтобы понять, что то, что ученики не смогли решить задачу не потому, что мозгов не хватило, а потому, что не хватило исходных данных, - это и есть одно из скрытых условий задачи. Второе скрытое условие, - что ученики знают, сколько человек в классе.
Разложим 40 на три множителя. Возможно шесть вариантов:
Поскольку ученикам потребовалось дополнительное условие, очевидно, что учеников в классе 14 (остальные варианты просто не допускают неоднозначного толкования) .
После того, как учитель сказал, что есть 1 младшая дочь, сразу стало ясно, что правильный ответ 5), то есть 1, 5, 8.
Любое произведение чисел будет четным, если оно содержит хотя бы оин четный сомножитель, поэтому задача сводится к определению того, есть ли в массиве хоть один четный элемент с нечетным порядковым номером. Почему просто не попытаться перемножить эти элементы? Например потому, что максимальное целое значение в компьютерной математике ограничено количеством байт, отводимых для представления данных такого типа и редко превышает 2³². А представление с плавающей точкой - приближенное и проверять четность для подобных чисел часто оказывается бессмысленным.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=ArrRandom(10,-15,15); a.Println; if a.Where((x,i)->i.IsEven).Any(x->x.IsEven) then Writeln('Четное') else Writeln('Нечетное') end.
Пояснения. 1. var a:=ArrRandom(10,-15,15); - описывается динамический массив "а", который создается и заполняется данными. 2. a.Println; - вывод элементов массива. 3. a.Where((x,i)->i.IsEven) выделяет из массива "а" элементы, у которых индекс четный (массив "а" - динамический и его элементы индексируются от нуля, поэтому элементы с нечетным порядковым номером имеют четные индексы). Полученная последовательность элементов посредством Any(x->x.IsEven) проверяется на наличие хотя бы одного элемента с четным значением. Проверка возвращает логическое значение, на основе которого формируется вывод.
корикамилкажвдвбаь аладлвдчоа адвдлак