Нужно найти алгоритм, если можно, то на Python
Директор IT-школы Борис Иванович поручил Васе и Маше собрать пакеты с подарками. На столе стоят три коробки. В одной коробке X ирисок, в другой Y леденцов, в третьей Z помадок. Борис Иванович сказал, что в каждом пакете с подарками должно быть поровну конфет двух видов и что надо использовать все конфеты. Вася с Машей должны собрать такие подарки или объяснить, что это невозможно.
Программа должна прочитать три положительных целых числа. В первой строке число A — количество ирисок, во второй строке число B — количество леденцов, в третьей строке число C — количество помадок. Известно, что A⩾B⩾C. Если собрать наборы не удастся, она должна вывести «Не получается» (без кавычек). Если удастся, то несколько троек чисел, описывающих наборы. В каждой тройке чисел должен быть один ноль и два целых положительных числа. Первое число обозначает количество ирисок, второе число — количество леденцов, третье — количество помадок.
Суммарное число каждого типа конфет должно совпадать с заданным. Если есть несколько способов собрать такие наборы, выведи любой.
Пример 1:
Для 14-ти ирисок, 8-ми леденцов и 18-ти помадок можно сделать такие наборы:
14 8 18
8 0 8 (это первый набор, 8 ирисок и 8 помадок)
2 2 0 (это второй набор, 2 ириски и 2 леденца)
0 6 6 (это третий набор, 6 леденцов и 6 помадок)
4 0 4 (это четвёртый набор, 4 ириски и 4 помадки)
Пример 2:
Для одной ириски, одного леденца и одной помадки сделать такие наборы нельзя.
Ответы (1 шт):
Пусть есть l наборов по одной конфете A и B (понятно, что могут быть любые варианты наборов, лишь бы общее количество было l), k наборов по одной A и C, и m наборов по одной B и C.
Очевидны соотношения:
l + m = B
l + k = A
k + m = С
И решение этой системы:
l -> 1/2 (A + B - C)
k -> 1/2 (A - B + C)
m -> 1/2 (-A + B + C)
Вот и все. Если все эти числа целые положительные - решение есть, и можно привести решение — см. начало ответа, они описаны.
Если хоть одно значение не целое или отрицательное — значит, такого набора нет и быть не может...
"По-моему, так". (с) Пух