Top.Mail.Ru
Ответы

Олимпиада Напишите на Python пж

Задание 5. Геометрическая игра на планшете Маленький Андрей изучает геометрические фигуры при помощи игры на планшете. У него есть равнобедренные прямоугольные треугольники четырёх цветов и ориентаций: жёлтые, зелёные, красные и синие. Для каждой разновидности треугольников есть заданное количество экземпляров этих треугольников. Более точно, у Андрея есть a жёлтых, b зелёных, c красных и d синих треугольников. Известно, что a≥b≥c≥d. Все треугольники одинаковые по размеру, но у каждого есть своя ориентация, которую нельзя менять. Треугольники одного цвета имеют одну и ту же ориентацию. Помимо этого, у мальчика есть n пустых ячеек, стороны которых совпадают с катетами треугольников. Игра происходит пошагово, на каждом шаге Андрей может взять очередной треугольник и переместить его параллельным сдвигом в одну из ячеек. При этом в одну ячейку можно поместить либо вместе жёлтый и красный треугольники, либо вместе зелёный и синий, либо один любой треугольник из имеющихся. На каждом шаге можно переместить треугольник строго одного текущего цвета. Сначала это жёлтый, на следующем ходе зелёный, далее красный и затем синий. Далее снова жёлтый, зелёный, красный, синий и т.д по циклу. Если места для текущего цвета нет либо треугольники текущего цвета закончились, то этот цвет пропускается и ходит следующий по порядку цвет. Допустим, в данном шаге есть треугольник текущего цвета. Если ещё есть пустая ячейка, данный треугольник обязательно помещается в эту ячейку. Если пустые ячейки закончились, но есть полупустая ячейка с парным текущему цветом, то треугольник помещается в неё. Игра длится до тех пор, пока есть цвет, который можно поместить в какую‑то ячейку. Определите, сколько каких треугольников Андрей распределит в конечном итоге по ячейкам. Формат входных данных На вход подаются четыре числа a, b, c, d, каждое в своей строке. Гарантируется, что a≥b≥c≥da≥b≥c≥d. В пятой строке содержится число n количество пустых ячеек. 1≤a, b, c, d≤1018, 1≤n≤1018. Обратите внимание, что значения переменных в этой задаче могут превышать возможные значения 32-битной целочисленной переменной, поэтому необходимо использовать 6464-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, long в Java и C#). Формат выходных данных Выведите ответ в четыре строки: для каждого соответствующего цвета укажите, сколько треугольников этого цвета получится поместить в ячейки. В первую строку выведите число жёлтых треугольников, во вторую зелёных, в третью красных и в четвёртую синих.

По дате
По Рейтингу
Аватар пользователя
Ученик
7мес
123456789101112131415161718192021222324
 def allocate_triangles(a, b, c, d, n): 
    # Максимально возможное количество желтых и красных 
    yellow_red = min(a + c, n) 
    # Максимально возможное количество зеленых и синих 
    green_blue = min(b + d, n) 
     
    yellow = min(a, yellow_red) 
    red = min(c, yellow_red - yellow) 
     
    green = min(b, green_blue) 
    blue = min(d, green_blue - green) 
     
    return yellow, green, red, blue 
 
a = int(input("Введите количество желтых треугольников: ")) 
b = int(input("Введите количество зеленых треугольников: ")) 
c = int(input("Введите количество красных треугольников: ")) 
d = int(input("Введите количество синих треугольников: ")) 
n = int(input("Введите количество ячеек: ")) 
 
yellow, green, red, blue = allocate_triangles(a, b, c, d, n) 
 
print(f"{yellow}\n{green}\n{red}\n{blue}") 
 
Аватар пользователя
Ученик
7мес

Остальное в тг канале