Присоединиться

11 класс·высокий уровень

Укажите использованный язык программирования и его версию.

Условие

Дан набор из N целых положительных чисел. Необходимо выбрать из набора произвольное количество чисел так, чтобы их сумма была как можно больше и при этом не делилась на 6. В ответе нужно указать количество выбранных чисел и их сумму, сами числа выводить не надо. Если получить нужную сумму невозможно, считается, что выбрано 0 чисел и их сумма равна 0.Напишите эффективную по времени и по памяти программу для решения этой задачи.

Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз.

Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайт и не увеличивается с ростом N.Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и по памяти, — 4 балла.

Максимальная оценка за правильную программу, эффективную только по времени или только по памяти, — 3 балла.

Максимальная оценка за правильную программу, не удовлетовряющую требованиям эффективности, — 2 балла.

Вы можете сдать одну или две программы решения задачи. Если Вы сдадите две программы, каждая из них будет оцениваться независимо от другой, итоговой станет бо́льшая из двух оценок.

Перед текстом программы кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.

Описание входных и выходных данныхВ первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 1000).В каждой из последующих N строк записано одно натуральное число, не превышающее 10 000.Пример входных данных:3123В результате работы программа должна вывести два числа: сначала количество выбранных чисел, затем их сумму.

Пример выходных данных для приведённого выше примера входных данных:2 5В данном случае из предложенного набора нужно выбрать два числа (2 и 3), их сумма равна 5.

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Если сумма всех данных чисел не кратна 6, нужно просто взять все числа.

    Если сумма кратна 6, нужно удалить из неё минимально возможный элемент — наименьшее из заданных чисел, не кратное

Осталось ещё 3 шага

  1. Если таких чисел нет (все числа в наборе…

  2. and (a < mn) then mn := a; end; if s mod d <>…

  3. do begin if a[count] mod 6 <> 0 then val :=…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Программирование»

Укажите использованный язык программирования и его версию. — решение с объяснением | Lom Ai