printРабочее место участника

printЗадачи

70. Электронная таблица

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Напишите программу, выполняющую функции очень простой электронной таблицы. Она работает с таблицей из 9 строк от 1 до 9 и 26 столбцов от A до Z. Клетки таблицы обозначаются именами, составленными из кодов столбца и строки, например, B1, S8.
Каждая клетка содержит выражение. Выражения используют целые константы, ссылки на клетки, скобки, бинарные операторы +, `-`, * и / (целочисленное деление). Например, 567, E8/2, (3+B3)*(C4-1) являются правильными выражениями. Все операторы целочисленные. Деление на ноль даёт в результате ноль.
Если значение ячейки, на которую ссылается некоторое выражение, не определено, оно считается равным нулю. Ситуация, когда две или более ячейки зависят друг от друга, является отдельным случаем – циклической ссылкой.
Ограничения: длина выражения в одной ячейке до 255 символов, все аргументы и результаты меньше `1\ 000\ 000`.
Ввод
Первая строка содержит число выражений `N`. Следующие `N` строк имеют формат <Имя клетки> = <выражение>. Все выражения корректные, и каждая ячейка определена не более чем одним выражением.
Вывод
В единственной строке выводится или значение клетки A1, или число 1000000 (один миллион), если значение клетки A1 не может быть найдено из-за циклической ссылки.

Пример ввода

4
A1=B1+C5
B1=20
C5 =B1 /D7-E1*E1
 E1=(3+1)*2

Пример вывода

-44
Источник: Far-Eastern quarterfinal NEERC, 2000
loading