formula из целых неотрицательных чисел, переменных (строк из строчных латинских букв), знаков +, -, * и круглых скобок. Числа, переменные и знаки разделены ровно одним пробелом; скобки пишутся вплотную к тому, что внутри них: (a + 2) * b. Унарного минуса нет, и перед переменной не бывает множителя без знака (2x не встретится).
Часть переменных известна: переменная known[i] равна values[i]. Подставьте их, раскройте скобки (сначала скобки, потом умножение, потом сложение и вычитание), приведите подобные и верните результат как список членов-строк:
- член записывается как коэффициент, затем через * его переменные в алфавитном порядке: -3*a*b*b. Коэффициент 1 тоже пишется: 1*x. Свободный член — просто число: 7;
- члены идут по убыванию степени (числа переменных с учётом повторов), при равной степени — в лексикографическом порядке записи без коэффициента; свободный член последний;
- члены с нулевым коэффициентом не выводятся, так что формула, равная нулю, даёт пустой список.formula="speed * time - 3 * time + 4", known=["speed"], values=[5] → ['2*time', '4']
Подставляем speed = 5: 5·time - 3·time + 4 = 2·time + 4. Сначала член первой степени, потом свободный.
formula="(b + a) * (a - 2)", known=[], values=[] → ['1*a*a', '1*a*b', '-2*a', '-2*b']
Раскрываем: a·a + a·b - 2·a - 2·b. Внутри члена переменные идут по алфавиту (a*b, а не b*a), члены — по убыванию степени, при равной степени — по алфавиту.
formula="x * x - y", known=["x", "y"], values=[3, 9] → []
9 - 9 = 0, а члены с нулевым коэффициентом не выводятся — ответ пустой.
formula состоит из строчных латинских букв, цифр, +, -, *, (, ) и пробелов и записана в описанном виде, без пробелов в начале и в концеknown различны, 1 ≤ len(known[i]) ≤ 20, только строчные латинские буквыformula="speed * time - 3 * time + 4", known=["speed"], values=[5]
['2*time', '4']
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 108 тестов на сервере, включая скрытые.