#autumnfest07. [autumn_fest_07]Bit Map
[autumn_fest_07]Bit Map
配点
満点
110
部分点
30
问题文
给定一个一元函数。用等价的不超过50个字符的表达式重写给定的函数。
在这个问题中,函数 和 被认为是等价的,当且仅当对于任意的 ,都有 。
输入格式
输入以以下形式给出:
definition1 definition2 ... definition
是要定义的函数的个数。
definition 服从以下BNF:
<definition> ::= <function-name> + "(x)=" + <expr>
<expr> ::= "x" | <number> | <function> + "(" + <expr> + ")"
| "(" + <expr> + "|" + <expr> + ")"
| "(" + <expr> + "^" + <expr> + ")"
| "(" + <expr> + "&" + <expr> + ")"
<function> ::= <function-name> | <function-name> + "^" + <number>
<function-name> ::= "a" | "b" | ... | "j"
<number> ::= "0" | "1" | ... | "2147483647"
中的"&"、"|"、"^" 分别表示位运算中的与、或、异或。
中的"^" 表示函数的合成 。
对于非负整数 , 定义如下:
函数的定义按顺序进行。在定义的右侧不会出现未定义的其他函数或正在定义的函数自身。同时,已经定义的函数不会被重新定义。
所有定义的函数都保证有一个不超过50个字符的等价表达式。
输出格式
按照给定顺序,每行按等价表达式输出一个函数。
每行输出的字符串不能超过50个字符。
输出应该遵循以下BNF规则。
<output> ::= <function-name> + "(x)=" + <expr>
<expr> ::= "x" | <number>
| "(" + <expr> + "|" + <expr> + ")"
| "(" + <expr> + "^" + <expr> + ")"
| "(" + <expr> + "&" + <expr> + ")"
<function-name> ::= "a" | "b" | ... | "j"
<number> ::= "0" | "1" | ... | "2147483647"
与输入BNF不同,注意不能在一个函数的表示中使用其他函数。
约束条件
- |definitioni|
此问题有30个分组的测试用例。这些测试用例满足上述约束条件以及以下额外约束条件。
输入示例 1
4
f(x)=(x^1)
g(x)=(f(x)&7)
h(x)=f(g^3((2147483647^x)))
c(x)=(3|10)
输出示例 1
f(x)=(x^1)
g(x)=((x^1)&7)
h(x)=((x&7)^7)
c(x)=11
当然,还有其他许多表达方式。例如
f(x)=((x^3)^2) c(x)=(((x^x)|1)^10)
```等等都是可以的。然而
```plain
f(x)=x^1 c(x)=(1|2|8) c(x)=(11)
```等不符合指定的BNF,会被判定为错误答案。
* * *
### 输入示例 2
```plain
5
a(x)=(x^1)
b(x)=a^1000000000(x)
c(x)=a^1000000001(x)
d(x)=a^0((x|2))
e(x)=a^1((x|2))
输出示例 2
a(x)=(x^1)
b(x)=x
c(x)=(x^1)
d(x)=(x|2)
e(x)=((x|2)^1)
出题人:komiya
来源名称
Autumn Fest