Обчислення виразів#5046

Обчислення виразів

1 секунда
64 мегабайти
Дуже легка

Це задача на обчислення виразів, записаних у стилі мови програмування C. Вирази можуть містити лише прості цілочисельні змінні та обмежену кількість операторів; константи у виразах відсутні. У програмі використовуються змінних, імена яких задаються літерами нижнього регістру від до . Початкові значення змінних такі: a = 1, b = 2, ..., z = 26.

Допустимі операції включають додавання та віднімання (бінарні та ) зі стандартним значенням. Наприклад, значення виразу a + c - d + b буде (1 + 3 - 4 + 2). Вхідні вирази можуть також містити унарні операції та , які можуть стояти як перед, так і після змінних. Якщо оператор стоїть перед змінною, значення змінної збільшується на одиницю перед її використанням у виразі. Значення виразу ++c - b буде . Якщо оператор слідує після змінної, збільшення значення змінної на одиницю відбувається після її використання у виразі. Значення c++ - b дорівнює , а значення збільшується після обчислення всього виразу, стаючи рівним . Оператор діє аналогічно, але зменшує значення операнда на одиницю.

Формально, вираз обчислюється наступним чином:

  1. Знаходимо всі змінні, перед якими стоїть оператор . Записуємо оператор присвоєння, що збільшує їх значення. Потім видаляємо перед змінними у всьому виразі.

  2. Аналогічно обробляємо оператори , що стоять після змінних.

  3. Тепер оператори відсутні у виразі. Обчислюємо значення виразу, отриманого після кроку і перед виконанням кроку .

  4. Виконуємо дії, зазначені в кроці , потім у кроці , а потім у кроці .

Таким чином, обчислення ++a + b++ еквівалентне виконанню наступних операцій: a = a + 1, result = a + b і b = b + 1.

Вхідні дані

Перший рядок містить кількість тестів . Кожен з наступних рядків містить один вираз. Пробіли у вхідних виразах слід ігнорувати. Вирази не містять неоднозначностей (наприклад, a+++b). Оператори або не можуть одночасно стояти до і після однієї змінної (наприклад, ++a++). Кожна змінна зустрічається у виразі лише один раз.

Вихідні дані

Для кожного тесту виведіть вираз у тому ж вигляді, в якому він надходить на вхід, потім виведіть значення всього виразу. Далі виведіть значення всіх змінних після обчислення виразу (відсортувавши при цьому імена змінних). Виводити слід значення лише тих змінних, які використовуються у виразі. Формат виводу наведено в прикладі.

Приклади

Приклад 1

Loading
Loading