Ktinaa) Сортируем числа по возрастанию.
Берем первые пять.
Среди них находим три, сумма которых делится на три. Это всегда можно сделать: выпишем остатки от деления на три. Если какого-то остатка три или больше, берем три этого остатка. Если каждого остатка меньше трех, значит каждого минимум по одному: тогда берем по одному каждого.
Откладываем эти три числа в сторону. Два невыбранных числа возвращаем в кучу.
Опять сортируем, берем первые пять из оставшихся, из них выбираем вторую тройку и откладываем в сторону, два числа возвращаем в кучу.
Таким образом откладываем в сторону пять троек, сумма каждой тройки делится на три. Для этого нам понадобилось
(
а не ) разных чисел. Теперь из пяти троек выбираем три по этому же алгоритму (делим сумму каждой тройки на три и из получившихся пяти чисел выбираем три, сумма которых делится на три , а две тройки чисел возвращаем в кучу. Отложенные
чисел -- искомые.
б) Нет: из любых
можно выбрать
сумма которых будет делиться на
.
Да, похоже на то, что или все исходные числа различаются или какие-то повторяются -- все равно. А, и сортировать по возрстанию в начале не надо. Просто берем любые пять и погнали, т.к. все равно нас только остатки интересуют...