Форум » Обработка числовых последовательностей » 27.66 Python: Ошибка в решении » Ответить

27.66 Python: Ошибка в решении

Mauzzz0: Здравствуйте. При вводе 4 1 2 2 3 программа выдаёт 3 5, хотя правильный ответ будет 3 7. Необходимо вынести строку " minX = 10001 # любое, большее 10000 " из тела цикла и поставить её перед ним. А так получается, что minX запоминает последнее не кратное 4 число, которое не обязательно является минимальным. Если не прав - извиняюсь. Код: [more]N = int(input()) summa = 0 for i in range(N): ____x = int(input()) ____minX = 10001 # любое, большее 10000 ____summa += x ____if x % 4 != 0 and x < minX: ________minX = x if summa % 4 != 0: ____print(N, summa) elif minX == 10001: ____print(0, 0) else: ____print(N-1, summa-minX)[/more] Условие: [more]66) На вход программы поступает последовательность из N натуральных чисел. Нужно выбрать из них произвольное количество чисел так, чтобы их сумма была максимальной и не делилась на 4. В результате программа должна вывести количество выбранных чисел и их сумму. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0. Входные данные: На вход программе подаётся натуральное число N (N <= 1000), а затем N натуральных чисел, каждое из которых не превышает 10000. Пример входных данных: 3 1 2 1 Выходные данные: Программа должна вывести два числа: сначала количество выбранных чисел, а затем их сумму. Пример выходных данных для приведённого примера входных данных: 2 3 [/more]

Ответов - 3

Bobreogen: В этих задачах по если не всем, то по многим не самые хорошие решения на питоне, много где видел места, где могут экзаменаторы снять баллы, а в некоторых так в принципе неправильные решения. Видно, что человек, составляющий решения, разбирается в языке (чего только стоит лямбда-выражения и прочий синтаксический сахар), но использовать эти решения не советую.

Поляков: Bobreogen пишет: в некоторых так в принципе неправильные решения Уточните, пожалуйста, где неправильные.

Поляков: Mauzzz0 пишет: Необходимо вынести строку " minX = 10001 # любое, большее 10000 " из тела цикла и поставить её перед ним. А так получается, что minX запоминает последнее не кратное 4 число, которое не обязательно является минимальным. Спасибо, вы правы. Исправлено.




полная версия страницы