#autumnfest07. [autumn_fest_07]Bit Map

[autumn_fest_07]Bit Map

配点

満点

110

部分点

30


问题文

给定一个一元函数。用等价的不超过50个字符的表达式重写给定的函数。

在这个问题中,函数 ffgg 被认为是等价的,当且仅当对于任意的 xin0,1,..,2147483647(=2311)x \\in \\{0,1,..,2147483647(=2^{31}-1)\\},都有 f(x)=g(x)f(x) = g(x)


输入格式

输入以以下形式给出:

NN definition1 definition2 ... definitionNN

NN 是要定义的函数的个数。

definitionii 服从以下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"

中的"&"、"|"、"^" 分别表示位运算中的与、或、异或。

中的"^" 表示函数的合成 fn(x)f^n(x)

对于非负整数 nnfn(x)f^n(x) 定义如下:

f0(x)=xf^0(x) = x fn+1(x)=f(fn(x))f^{n+1}(x) = f(f^n(x))

函数的定义按顺序进行。在定义的右侧不会出现未定义的其他函数或正在定义的函数自身。同时,已经定义的函数不会被重新定义。

所有定义的函数都保证有一个不超过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不同,注意不能在一个函数的表示中使用其他函数。

约束条件

  • 1N101 ≤ N ≤ 10
  • |definitioni| 1000≤ 1000

此问题有30个分组的测试用例。这些测试用例满足上述约束条件以及以下额外约束条件。

  • N=1N = 1

输入示例 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