Автор: | Завгороднев А.А. | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Петя пришел в на урок изобразительного искусства. Там ему выдали 3 100-миллилитровых банки с красками разных цветов. Цвет краски задается 3 целыми числами r, g и b- ее насыщенностью красного, зеленого и синего соответственно. Учительница задала Пете смешать краски так, чтобы получить 100мл краски цвета rx, gx, bx.
Краски смешиваются следующим образом:
Пусть есть a1 миллилитров краски цвета r1, g1, b1 и a2 миллилитров краски цвета r2, g2, b2. Тогда новая краска будет иметь объем a1 + a2 мл, а ее красный цвет будет вычисляться по формуле a1 r1 + a2 r2a1 + a2. Зеленый и синий цвета вычисляются аналогично.
Вам надо помочь Пете и сказать сколько миллилитров каждой краски надо взять, чтобы получить нужный цвет. В ответе выведите целую часть объемов красок. Если искомую краску получить невозможно, выведите -1.
В первой строчке располагаются 3 целых числа - r1, g1, b1 - цвета первой краски.
Во второй - r2, g2, b2 - цвета второй краски
В третьей - r3, g3, b3 - цвета четвертой краски
В последней строчке располагаются три целых числа rx, gx, bx - цвет результирующей краски.
Выведите 3 целых числа - целые части количества миллилитров первой, второй и третьей красок соответственно. Если искомую краску получить невозможно, выведите -1.
Все числа целые и неотрицательные.
r1 + g1 + b1 = 255
r2 + g2 + b2 = 255
r3 + g3 + b3 = 255
rx + gx + bx = 255
Баллы за подзадачи начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 40 | Краски, из которых надо составлять новый цвет чистые, то есть у вас есть банки красной (255, 0, 0), зеленой(0, 255, 0) и синей (0, 0, 255) красок. | полная | |
2 | 60 | Без ограничений | 1 | полная |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
Надо сначала определить какая из красок красная, зеленая, а какая синяя. И тогда надо будет взять rx100255 красной, gx100255 зеленой и bx100255 синей красок.
Введем неизвестные x1, x2, x3 - количество первой, второй и третьей красок. Тогда в результирующей краске будет красный цвет интенсивности r1 x1 + r2 x2 + r3 xrx1 + x2 + x3. И тогда запишем равенство r1 x1 + r2 x2 + r3 xrx1 + x2 + x3 = rx. По условию x1 + x2 + x3 = 100, поэтому знаменатель можно отбросить, и просто в конце ответ умножить на 100. Если проделать тоже самое с зеленым и синим цветами, то получим в итоге систему из 3х уравнений с 3мя неизвестными, которую можно решить на листочке, учитывая в коде, что вы не делите на 0.
Можно заметить, что возможные значения x1 - от 0 до 100 включительно, то есть всего 101 возможное значение. Аналогично у x2 и x3 всего 101 возможных значений. Тогда можно в трех вложенных циклах перебрать все x1, x2 и x3, проверяя, что x1 + x2 + x3 ≤ 100 и при смешивании получается нужный цвет.