UniLecs #153. Джентльмены удачи
UniLecsЗадача: воры Хмырь и Косой украли 3 цельных куска цветного металла. Каждый кусок весит a, b, c грамм соот-но. Помогите им поделить куски поровну. Если куски не делятся ровно по кол-ву грамм, то они успеют распилить только 1 из кусков на 2 доли, иначе они рискуют быть схваченными.
Входные данные: a, b, c - вес кусков в граммах, сумма весов кусков четна. (a, b, c - натуральные числа от 1 до 10^6).
Вывод:
1. Если не получается поделить куски поровну, то выводите сообщение : "Мы сдаемся".
2. Если куски делятся поровну без распила, то вывести сообщение: "Пилить не надо, разбегаемся."
3. Если все таки без распила не обойтись, то вывести номер распиливаемого куска, а также веса долей, на ктр вы распилили кусок. Если вариантов распила несколько, выводите любой из них.
Пример:
1. a = 2, b = 1, c = 1
Answer = "Пилить не надо, разбегаемся."
2. a = 2, b = 3, c = 3
Answer = "2й кусок. 1-я доля = 2, 2-я доля = 1"
Идея: первое что проверим, можно ли поделить куски без распиливания.
Т.е. проверяем выполняется ли одно из следующих равенств:
a + b = c, b + c = a либо a + c = b.
Если ни одно из равенств не выполняется, то будем пилить один из кусков.
Так как по условию задачи сумма весов кусков четная, то эта сумма нацело делится пополам.
half = (a + b + c) / 2.
Теперь нужно определить какой кусок и на какие доли необходимо поделить.
1. Если a > half, то делим кусок a на след.доли: half, a - half.
2. Если a < half < a + b, то делим кусок b на след.доли: half - a, a + b - half
3. Если a + b < half, то делим кусок c на доли: half - a - b, half
Реализация:
https://gist.github.com/unilecs/d449101aecb57b460e5f9536dcfa87ac