Беси изобрела новый язык программирования, но поскольку нет компилятора, она нуждается в Вашей помощи для исполнения её программ.
COWBASIC - это простой, элегантный язык. У него две основные черты: сложение и циклы. Для решения проблемы переполнения, Беси выполняет все операции сложения по модулю 109+7. MOO-цикл исполняет блок кода фиксированное количество раз. Циклы и сложения могут быть вложенными.
Вам дана COWBASIC-программа, определите результат её выполнения - число, которое она вернёт.
ФОРМАТ ВВОДА:
Вам дана COWBASIC-программа длиной не более 100 строк, каждая строка длиной не более 350 символов. COWBASIC-программа это список операторов.
Имеется три типа операторов:
<переменная> = <выражение>
<литерал> MOO {
<список операторов>
}
RETURN <переменная>
Имеется три типа выражений:
<литерал>
<перменная>
( <выражение> ) + ( <выражение> )
Литерал - это положительное целое число не более 100,000.
Переменная - это строка не более 10 маленьких латинских букв.
Гарантируется, что переменная никогда не будет использована или возвращена оператором RETURN прежде, чем она будет определена. Гарантируется, оператор RETURN будет только один раз в последней строке программы.
ФОРМАТ ВЫВОДА:
Выведите одно положительное целое число - значение переменной, возвращённой оператором RETURN.
ОЦЕНИВАНИЕ
в 20% тестов MOO-циклы не вложены.
В других 20% всех тестов программу будет иметь только одну переменную. MOO-циклы могут быть вложенными
В остальных тестах нет никаких ограничений.
Ввод |
Вывод |
Примечание |
x = 1
10 MOO {
x = ( x ) + ( x )
}
RETURN x
|
1024 |
Эта COWBASIC-программа вычисляет 210 |
n = 1
nsq = 1
100000 MOO {
100000 MOO {
nsq = ( nsq ) + ( ( n ) + ( ( n ) + ( 1 ) ) )
n = ( n ) + ( 1 )
}
}
RETURN nsq
|
4761 |
Эта программа вычисляет (105∗105+1)2 (по модулю 109+7). |
.