С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Заблокирован

Выбрать некоторые элементы массива так чтобы их сумма была четной

24.02.2023, 00:14. Показов 1706. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив из n
целых чисел. Вам нужно выбрать некоторые из них так, чтобы сумма выбранных чисел была четной, и, среди всех таких, максимально возможной.
======================
Входные данные:
Первая строка содержит число n (1≤n≤1000). Вторая строка содержит n чисел ai (−1000≤ai≤1000).
======================
Выходные данные:
Выведите максимально возможную четную сумму, которую можно получить.
======================
Примеры:
1) Входные данные:
5
1 2 3 4 5
выходные данные:
14
--------------------------------
2) Входные данные:
5
4 -1 5 -3 6
выходные данные:
14
--------------------------------
3) Входные данные:
3
1 2 3
выходные данные:
6
--------------------------------
4) Входные данные:
3
-1 -2 -3
выходные данные:
0
======================
Примечание
В первом примере можно взять числа 2, 3, 4, 5.

Во втором примере можно взять числа 4, -1, 5, 6.

В третьем примере можно взять все числа.

В третьем примере можно не брать ничего, тогда сумма будет 0.


Подскажите пожалуйста как это решать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2023, 00:14
Ответы с готовыми решениями:

Выбрать некоторые элементы массива так чтобы их сумма была четной
Есть массив из n целых чисел. Вам нужно выбрать некоторые из них так, чтобы сумма выбранных чисел была четной, и, среди всех таких,...

Переставить элементы массива так, чтобы сумма любых последовательных элементов была не четной
дан массив элементов, надо переставить элементы так, чтобы сумма любых последовательных элементов была не четной, если это невозможно...

Удалить из массива некоторые элементы так, чтобы сумма оставшихся была кратна 600
решаю олимп. задачу, вообщем самое сложное в задаче был ввод данных, но вот я запоролся в другом месте... вообщем у меня получился массив...

15
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
24.02.2023, 00:36
Цитата Сообщение от Pythonistj Посмотреть сообщение
как это решать
Сам пробовал? Приложи свой код

Добавлено через 13 минут
Pythonistj, Можно так попробовать на глазок
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
n = int(input())
s = [int(n) for n in input().split()]
 
if len(s) != n:
    print("Error")
    exit()
 
l = list(filter(lambda x: x%2, s))
sum1 = sum(list(filter(lambda x: not x%2, s)))  # сумма всех чётных
 
if len(l) % 2: l.pop()
 
print(sum1 + sum(l1))
Тут просто четная сумма выводится всех чисел

Добавлено через 3 минуты
Нашел в интернете код, подредактировал его под ваше условие, так должно работать:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
n = int(input())
s = [int(n) for n in input().split()]  # list(map(int, input().split()))
 
even_sum = 0
even_count = 0
odd_numbers = []
 
for num in s:
    if not num % 2:
        even_sum += num
        even_count += 1
    else:
        odd_numbers.append(num)
 
if even_count == 0:
    print(0)
 
elif even_count == 1 and len(odd_numbers) == 0:
    print(0)
 
elif even_count == len(odd_numbers):
    print(even_sum + sum(odd_numbers))
 
else:
    if even_count > len(odd_numbers):
        odd_numbers.sort()
        print(even_sum + sum(odd_numbers[1:]))
    else:
        even_numbers = [num for num in a if num % 2 == 0]
        even_numbers.sort()
        print(even_sum + sum(even_numbers[1:]))
1
Заблокирован
24.02.2023, 09:03  [ТС]
Code
1
2
3
4
Traceback (most recent call last):
  File "C:/Users/Администратор/PycharmProjects/untitled9/venv/Saovegona.py", line [B]29[/B], in <module>
    even_numbers = [num for num in a if num % 2 == 0]
NameError: name 'a' is not defined
Добавлено через 14 минут
ошибка во втором коде

Добавлено через 3 минуты
В первом коде в последней строке не понимает что за L1. Я ставлю что это L, но там в 1 примере выводит 10, а надо 14

Добавлено через 5 минут
Я думаю нужно так сделать:
Нужно выбрать сумму с наименьшим нечетным положительным и наименьшим нечетным отрицательными с
суммой без наименьшего нечетного положительного.
Выбрать большую.

Проходим по всем числам, и получаем :
- Сумму всех положительных.
- Наименьшее отрицательное нечетное число.
- Наименьшее положительное нечетное число.
0
Эксперт Python
8848 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,315
24.02.2023, 09:10
Pythonistj,
- Наименьшее отрицательное нечетное число.
- Наименьшее положительное нечетное число.
Можно объединить в:
- Модуль наименьшего по модулю нечетного числа
1
Заблокирован
24.02.2023, 09:15  [ТС]
это как наименьшее по модулю нечетное число?

типа если 4 -1 5 -3 -7

то это -7?
0
Эксперт Python
8848 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,315
24.02.2023, 09:27
Лучший ответ Сообщение было отмечено Pythonistj как решение

Решение

Pythonistj, -1
Если через цикл, то можно так:
Python
1
2
3
4
5
6
7
8
9
…
dx = 1001
for elem in a:
    …
    if elem%2:
        dx = min(dx, abs(elem))
    …
dx %= 1001
И из суммы всех положительных чисел вычесть dx, если сумма не четна
1
Заблокирован
24.02.2023, 09:30  [ТС]
Так если dx = 1001, сумма положительных гдето 10
то 1001-10 это 991 это очнь много
0
Эксперт Python
8848 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,315
24.02.2023, 09:35
Pythonistj, если сумма 10, то ничего не надо вычитывать - сумм четна. Если она не четна, то минимальное по модулю нечетное число меньше суммы
1
Заблокирован
24.02.2023, 09:52  [ТС]
Цитата Сообщение от Pythonistj Посмотреть сообщение
Проходим по всем числам, и получаем :
- Сумму всех положительных.
- Наименьшее отрицательное нечетное число.
- Наименьшее положительное нечетное число.

так ну получили эти 3 числа а что с ними сделать надо скажи пж чето я не понимаю
0
Эксперт Python
8848 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,315
24.02.2023, 10:12
Pythonistj,
И из суммы всех положительных чисел вычесть dx, если сумма не четна
1
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
24.02.2023, 10:27
Python
1
2
3
4
_ = int(input())
l = list(map(int, input().split()))
s = sum([x for x in l if x > 0])
print(s if s % 2 == 0 else s - min([abs(x) for x in l if x < 0]))
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
24.02.2023, 10:35
Parramon, у вас опечатка в конце
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.02.2023, 10:37
Parramon, а если положительное нечетное будет?
1
Заблокирован
24.02.2023, 10:39  [ТС]
Ошибка на тесте:
2
0 15


Тут видимо 0 надо а не 15
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.02.2023, 10:43
Pythonistj, в последней строке нужна проверка на нечетность, а не отрицательность.
1
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
24.02.2023, 10:48
Лучший ответ Сообщение было отмечено Pythonistj как решение

Решение

eaa, да, что-то задумался... Конечно
Python
1
print(s if s % 2 == 0 else s - min([abs(x) for x in l if x % 2 == 1]))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2023, 10:48
Помогаю со студенческими работами здесь

Сколькими способами можно выбрать из натуральных чисел три числа так, чтобы их сумма была четной?
Сколькими способами можно выбрать из натуральных чисел от 1 до 30 три числа так, чтобы их сумма была четной?

Выбрать диагональные элементы квадратной матрицы, так чтобы их сумма была наименьшей
Выбрать n элементов квадратной матрицы (размером n (строк) × n (столбцов), где 2\leq n\leq 6) так, чтобы : 1) нужно выбрать по...

Переставить элементы массива так, чтобы сумма столбцов была одинаковой
Добрый день всем! Специалисты помогите переставить элементы массива так, чтоб сумма столбцов была одинаковой :) количество строк не...

Выбрать наименьшее количество чисел из набора так, чтобы их сумма была не менее M
Задача номер 1 Квадратное уравнение имеет вид: ax2 + bx + c = 0. Как известно это уравнение может иметь 1, 2 или 0 действительных...

Выбрать наименьшее количество чисел из набора так, чтобы их сумма была не менее M
Задача Набрать сумму. Задано N целых чисел. Необходимо выбрать наименьшее количество чисел из этого набора так, чтобы их сумма была не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru