#L3666. [USACO17OPEN] COWBASIC P

    ID: 871 传统题 文件IO:cowbasic 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>模拟线性代数矩阵乘法数据结构其他构造USACO2017

[USACO17OPEN] COWBASIC P

P3666 [USACO17OPEN] COWBASIC P

题目描述

Bessie 发明了一种新的编程语言,但由于还没有编译器,她需要你的帮助来实际运行她的程序。

COWBASIC 是一种简单而优雅的语言。它有两个关键特性:加法和 MOO 循环。Bessie 设计了一个巧妙的解决方案来处理溢出:所有的加法都是在模 109+710^9+7 下进行的。但 Bessie 的真正成就是 MOO 循环,它可以固定次数地运行一段代码。当然,MOO 循环和加法可以嵌套。

给定一个 COWBASIC 程序,请帮助 Bessie 确定它返回的数字。

输入格式

你将获得一个最多 100 行的 COWBASIC 程序,每行最多 350 个字符。一个 COWBASIC 程序是一个语句列表。

有三种类型的语句:

<variable> = <expression>

<literal> MOO {
<list of statements>
}

RETURN <variable>

有三种类型的表达式:

<literal>

<variable>

( <expression> ) + ( <expression> )

字面量是一个最多为 100,000 的正整数。

变量是一个最多由 10 个小写英文字母组成的字符串。

保证在定义之前不会使用或 RETURN 任何变量。保证 RETURN 恰好发生一次,并且在程序的最后一行。

输出格式

输出一个正整数,表示 RETURN 的变量的值。

输入输出样例 1

x = 1
10 MOO {
x = ( x ) + ( x )
}
RETURN x
1024

输入输出样例 2

n = 1
nsq = 1
100000 MOO {
100000 MOO {
nsq = ( nsq ) + ( ( n ) + ( ( n ) + ( 1 ) ) )
n = ( n ) + ( 1 )
}
}
RETURN nsq
4761

说明/提示

评分

在 20% 的测试用例中,MOO 循环不会嵌套。

在另外 20% 的测试用例中,程序只有一个变量。MOO 循环可以嵌套。

在剩余的测试用例中,没有进一步的限制。