Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите задача на питоне

- Ученик (119), на голосовании 2 месяца назад
Осталось всего неделя до конца учебы, а Гена и Антон еще даже не приступали к лабораторным работам.

В этом семестре у ребят всего 5
дисциплин. По каждой из 5
дисциплин необходимо сдать ?1,?2,?3,?4,?5
лабораторных работ. Ребятам повезло, все лабораторные работы можно сдавать бригадой. Гена и Антон решили разделить обязанности: лабораторные работы по одним дисциплинам будет делать Гена, по другим — Антон.

Смогут ли Гена и Антон распределить обязанности так, чтобы каждый из них сделал одинаковое количество лабораторных работ. Обратите внимание, что ребята распределяют между собой дисциплины, а не сами лабораторные работы. Изучите примеры и примечание для лучшего понимания.

Входные данные
Первая и единственная строка содержит пять целых чисел: ?1 , ?2 , ?3 , ?4 и ?5
— количество лабораторных работ, по 1 -й, 2 -й, 3 -й, 4 -й и 5 -й дисциплине соответственно (1≤??≤100,1≤?≤5) .

Выходные данные
Если Гена и Антон смогут распределить дисциплины так, чтобы каждый их них сделал одинаковое количество лабораторных работ, выведите «YES» (без кавычек). В противном случае выведите «NO».
Голосование за лучший ответ
Gerdot Lareston Мудрец (10768) 3 месяца назад
 def can_divide_lab_works(labs): 
total_sum = sum(labs)

# Если сумма нечетная, невозможно поделить на две равные части
if total_sum % 2 != 0:
return "NO"

target_sum = total_sum // 2

# Перебираем все возможные подмножества и проверяем, можно ли набрать target_sum
for i in range(1, 1 << 5):
subset_sum = 0
for j in range(5):
if i & (1 << j):
subset_sum += labs[j]
if subset_sum == target_sum:
return "YES"

return "NO"

# Пример использования:
labs = list(map(int, input().split()))
print(can_divide_lab_works(labs))
Вычисляем общую сумму total_sum и проверяем, является ли она четной. Если нет, возвращаем "NO".
Находим target_sum, которая равна половине total_sum.
Перебираем все возможные подмножества с использованием битовых масок. Для каждого подмножества вычисляем сумму его элементов. Если какая-либо из сумм равна target_sum, возвращаем "YES".
Если ни одно подмножество не подходит, возвращаем "NO".
Тома ДжеринаПросветленный (20669) 3 месяца назад
А пропитон и битовые маски Можно чуть-чуть поподробнее? Хотя бы Где посмотреть?
Gerdot Lareston Мудрец (10768) Тома Джерина, Чего бл*ть?)
Gerdot LarestonМудрец (10768) 3 месяца назад
Тома Джерина, удалили комментарий, заново напиши.
Похожие вопросы