luogu#P2229. [HNOI2002] 沙漠寻宝

[HNOI2002] 沙漠寻宝

题目描述

传说在漫无边际的沙漠中有一个古代城市的废墟,里面埋藏了大量的宝藏。听到这个消息的人一个又一个的前去寻宝,却没有发现一个回来的人。

探险家Jack是冒险者队伍中的后起之秀,它加入冒险者队伍的时间虽然不长,却屡屡依靠自己过人的智慧使自己和队友们脱离了险境。“明知山有虎,偏向虎山行”。 在Jack探险队的宗旨的指引下,Jack和他的队友们踏上了沙漠寻宝的旅程。

“我发现沙漠废墟了。”在一名队员的叫喊声中,Jack隐约看到了一些古代城市的残垣断壁和一个通道。 “一定就是这里了。”Jack带领着大家进入了通道。

然而,不幸的事情发生了。就在Jack他们进入通道的同时,通道的入口“轰”的一声就关闭了。Jack和他的队友走到了通道的尽头,正前方是一个巨大的铁门。最令人奇怪的是,铁门竟然使用的是一个极度先进的带有键盘和显示器的电子密码锁,铁门旁还赫然写着开锁的方法:“想到得到我的宝藏的人们,到这里的路途很辛苦吧!不过这一切很快就会结束的,这个铁门就是你们的葬身之地。除非你们能够计算出我屏幕上程序的结果,并且通过键盘输入进去,这扇门就会打开,里面就是我所有的宝藏”

我们的Jack果然不负众望,他打开了他的行囊,拿出了一个类似保险箱的东西。“没见过吗?这是最新型的笔记本电脑,没有它,我再怎么天才也不可能打开这扇门的。”面对大家疑惑的目光,Jack打开了笔记本电脑的开关。

“这个宝藏主人的程序十分的奇怪,我虽然没见过,但根据我的猜测,它的结构应该是这样的:

程序共包含6种语句:start,end,loop,continue,write,以及?=*形式的语句。

start是程序的开始标志,其对应了一个结束标志end。

loop后面空一格并紧跟了一个表达式*,表达式*的值N表示即将循环N次,对应的循环结束标志也是end。

continue表示程序跳转到当前循环对应的end语句,break表示程序将跳出当前的循环。

write后面空一格并紧跟了一个表达式*,表示要输出表达式*的值,也就是要输入到密码锁中的内容。

?=*是赋值语句,?是变量的名字,*计算出来的值是要给?的。

另外,值得庆幸的是,变量名只允许使用’a’..’z’这26个小写字母,表达式也只允许使用加减乘除四种运算和以及括号,参与运算的也只能是26个变量或者是整数(允许不止一位整数)。表达式不会超过80个字符。”

“希望Jack能很快将锁打开。”大家心里默念着。

给定程序对所有语句的执行次数的总和小于2000000次。

输入格式

输入文件为program.in,给出了宝藏主人的程序。其中任两条语句用若干个空格或回车符隔开。

输出格式

输出文件为program.out,是你要输入密码锁的内容。每次输出占一行。

start
     i=0
     j=0
     loop 100
          i=i+1
          j=j+i
          continue
          loop 10
               write j
          end
     end
     loop 100
          j=j+1
          break
          j=j+1
     end
     write j
end

5051