Главная > Язык LIST-95 | ||||||
1995 |
Лаборатория интеллектуальных систем разработала новый язык программирования с названием LIST-95. Язык предназначен для работы с длинными списками. Единственный тип в языке - это список из целых чисел, не превосходящих по модулю одного миллиарда. Константами в этом языке являются конечные арифметические прогрессии (которые задаются начальным элементом, разностью и числом элементов). Разность прогрессии может равняться нулю, тогда список будет состоять из заданного количества одинаковых чисел. Единственный оператор - это оператор присваивания, в правой части которого стоит либо прогрессия, либо бинарная операция, операндами которой могут быть только имена переменных. Допустимыми являются следующие операции: Сцепление (конкатенация) списков. Обозначение: A#B. Результат: список, полученный приписыванием элементов списка B в конец списка A. Сложение списков одинаковой длины. Обозначение: A+B. Результат: список, полученный поэлементным сложением элементов списков A и B. Умножение списков одинаковой длины. Обозначение: A*B. Результат: список, полученный поэлементным умножением элементов списков A и B. Прогрессии представляются в языке так: <Начальное значение, Разность, Число элементов>, а оператор присваивания так: Переменная := Константа или Переменная := Переменная Операция Переменная. Переменными являются заглавные буквы латинского алфавита. Программа состоит из одного или нескольких операторов присваивания. Каждый оператор присваивания записывается на отдельной строке. Результатом работы программы на языке LIST-95 является список, полученный в последнем операторе присваивания. Напишите программу, которая вводит число N (1 ≤ N ≤ 1000000000), программу на языке LIST-95 и определяет значение N-го элемента результирующего списка. Исходные данные расположены в текстовом файле (имя файла вводится с клавиатуры) по следующему формату. Первая строка содержит число N. Со второй строки и до конца файла расположена программа на языке LIST-95. Текст программы не содержит пробелов и пустых строк. В конце последней строки программы символов перевода строки нет. Примечания. Исходные данные корректны и их проверка не требуется. Программа, заданная во входном файле исполняется корректно, т.е. в правых частях присваиваний используются только инициализированные переменные и длины операндов у операций сложения и умножения списков совпадают. Количество строк во входном файле не превышает 100. Результат работы программы выводится на экран. Пример файла исходных данных: 23 X:=<1,2,2000000> A:=<2,2,2000000> X:=X+X A:=A#X Для приведенного выше примера программа должна выдать, что на 23-ем стоит число 46. |