8594: expression Evaluation

内存限制:128 MB 时间限制:2 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:7 通过:0

题目描述

表达式求值是一个经典问题。在这个问题中,您只需要计算长度小于10^510的表达式

5

. 它只包含非负整数(可能有前导零),' +'s, ' -'s和' *',也就是说,它满足以下语法:
<expression>:= <term>|<expression>+<term>|<expression>-<term> <term>:= <number>|<term>*<number> <number>:= <digit>|<number><digit> <digit>:= 0|1|2|3|4|5|6|7|8|9
例如:013,0213 -2132*0213是有效的,但-2132和32113+-3213是无效的。



评估的结果可能太大或负面。输出2^{32}2模的结果

32

避免溢出,因为您将使用3232位计算机。



3232位的机器包含2^{10}2

10

记忆单位,表示为r[0]r[0], r[1]r[1], \cdots⋯,r[2^{10}-1]r[2

10

−1]。每个单元是3232位无符号数,也是一条指令。



在每个循环中,令pc=r[0]\bmod 2^{10}pc=r[0]mod2

10

,机器执行指令r[pc]r[pc]。

让r (pc) = a2 ^ {30} + b2 ^ {20} + c2 ^ {10} + (pc)博士= a2

30.

+ b2

20.

+ c2

10

+d,其中aa、bb、cc、dd为非负整数,且小于2^{10}2

10



如果a=0a=0,机器输出r[b]r[b]的值并停止。

如果a=1a=1,则:

—如果input中没有剩余字符,设置r[0]r[0]为r[d]r[d];

—否则,将r[b]r[b]设置为输入的下一个字符的ASCII码,将r[0]r[0]设置为r[c]r[c]。

如果= 2 = 2,r [b] [b] (r [b] + [c]) \ bmod 2 ^ {32} (r [b] + [c]) mod2

32

,则将r[0]r[0]设置为r[d]r[d]。

如果a=3a=3,则:

—如果r[b]=0r[b]=0,设置r[0]r[0]为r[c]r[c]的值;

—否则,请将r[0]r[0]设置为r[d]r[d]的值。



注意,如果在某些指令中b=0b=0, r[0]r[0]可以被设置多次。它的值是循环后最后一次设置的值。



您需要设置每个单元的初始值,使机器能够在有限周期内停止,并输出以2^{32}2为模的表达式的结果

32





因为每个问题都有时间限制。在这个问题中,机器最多可以执行10^810

8

周期。

输入格式

唯一一行包含一个3232位无符号整数—表达式生成器的种子。



你不需要使用它。它只是让检查器生成表达式

输出格式

输出2 ^ {10}2

10

唯一一行中的3232位无符号整数——内存单元的初始值。

输入样例 复制

0

输出样例 复制

0 0 ... 0 (1024 zeros)

数据范围与提示

The output in the example is wrong, just for explaining the output format

分类标签