#CSPJ1011. 求值(eval)
求值(eval)
题目描述
或许这道题比经典的"表达式求值"还是要简单一点的。
有一种简单的编程语言,我们如下定义其中的概念:
- 常数:单个数字,即 到 。注意不会出现多位数字的情况。
- 变量:单个大写字母,即
A
到Z
。每个变量可以存储一个整数,所有变量的初始值为 。 - 值:常数或者变量。
- 赋值语句:由变量、
=
、值构成,例如A=3,B=A,C=C
。表示将变量修改为右侧的值。 - 加法语句:由变量、
+=
、值构成,例如A+=9,B+=B
。表示将变量额外加上右侧的值。 - 语句:赋值语句、加法语句或者循环语句。
- 循环语句:由
for(变量,值,值)
、语句构成,例如for(I,0,9)A+=I
,for(I,0,9)for(J,0,I)A+=J
。设两个值在此时依次为 和 ,则:- 所有的输入数据保证此时 。
- 依次令变量取 ,计算右侧的语句。
- 整个循环语句结束后,变量的值取b。
- 右侧的语句中,保证不会对循环变量进行修改(即不会出现在赋值语句和加法语句的左侧,也不会成为另一个循环语的变量),并且如果 和 是变量,也不会对其进行修改。
输入格式
从 eval.in
文件读入数据。
输入若干行,每行包含一个语句。你需要从上到下依次执行这些语句。
不会出现空格等无关字符。
输出格式
输出到 eval.out
文件。
按照字母的顺序,输出所有不为 的变量。每行输出一个,格式为:变量名、=、它的值。如果值的位数超过了 位,则只输出其最后 位,并在之前添加 ...
。
输入输出样例
for(I,0,9)A+=I
for(I,0,9)for(J,0,I)B+=J
C=1
for(I,1,3)for(J,0,9)C+=C
A=45
B=165
C=...073741824
I=3
J=9
说明/提示
样例解释
变量 最终的值为 。
数据范围
对于所有编号为奇数的测试点,保证输入恰好有 行。
对于测试点 ,保证不含加法语句和循环语句(即只含赋值语句)。
对于测试点 ,保证不含循环语句。
对于测试点 ,保证循环语句的右侧不会出现另一个循环语句。
对于前 个测试点,保证标准答案中不含有 ...
,且程序运行过程中任何变量的值均小于 。
对于全部数据,保证输入的行数不超过 行,每行不超过 个字符,且所有语句被执行的次数总和不超过 。
相关
在下列比赛中: