COWBASIC

提交数: 4, 通过率: 0%, 平均分: 0

题目描述:

Bessie has invented a new programming language, but since there is no compiler yet, she needs your h
elp to actually run her programs.COWBASIC is a simple, elegant language. It has two key features: ad
dition and MOO loops. Bessie has devised a clever solution to overflow: all addition is done modulo 
109+7. But Bessie's real achievement is the MOO loop, which runs a block of code a fixed number of t
imes. MOO loops and addition can, of course, be nested.Given a COWBASIC program, please help Bessie 
determine what number it returns.

输入格式:

You are given a COWBASIC program at most 100 lines long, with each line being at most 350 characters
 long. A COWBASIC program is a list of statements.
There are three types of statements:
<variable> = <expression>
<literal> MOO {
  <list of statements>
}
RETURN <variable>
There are three types of expressions:
<literal>
<variable>
( <expression> ) + ( <expression> )
A literal is a positive integer at most 100,000.
A variable is a string of at most 10 lowercase English letters.
It is guaranteed that no variable will be used or RETURNed before it is defined. It is guaranteed th
at RETURN will happen exactly once, on the last line of the program.

输出格式:

Output a single positive integer, giving the value of the RETURNed variable.
Scoring
In 20 percent of all test cases - MOO loops are not nested.
In another 20 percent of all test cases - The program only has 1 variable. MOO loops can be nested.
In the remaining test cases, there are no further restrictions. 

样例输入:

样例1:
x = 1
10 MOO {
  x = ( x ) + ( x )
}
RETURN x

样例2:
n = 1
nsq = 1
100000 MOO {
  100000 MOO {
    nsq = ( nsq ) + ( ( n ) + ( ( n ) + ( 1 ) ) )
    n = ( n ) + ( 1 )
  }
}
RETURN nsq

样例输出:

样例1:
1024

样例2:
4761

提示:

This COWBASIC program computes (10^5+10^5+1)^2 (modulo 10^9+7).

时间限制: 1000ms
空间限制: 128MB

来源: Usaco2017 Open Platinum