CF878A Short Program

题目描述

Petya 学习了一门新的编程语言 CALPAS。在这种语言中,一个程序总是接受一个非负整数,并返回一个非负整数。 在该语言中,只有三种命令:对当前整数与给定常数进行按位运算 AND、OR 或 XOR。一个程序可以包含任意数量、任意常数(从 $0$ 到 $1023$)的这些操作序列。当程序运行时,所有操作按照给定的顺序依次作用于参数,最后返回结果整数。 Petya 写了一个程序,但发现它太长了。请你写一个只包含不超过 $5$ 行命令的 CALPAS 程序,使其对于所有 $0$ 到 $1023$ 范围内的输入都返回与 Petya 的原程序相同的结果。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 5 \times 10^5$),表示命令的数量。 接下来 $n$ 行,每行表示一条命令。每条命令由一个操作符("&", "|", "^",分别代表 AND、OR、XOR 操作)和一个常数 $x_i$($0 \leq x_i \leq 1023$)组成。

输出格式

输出一个整数 $k$($0 \leq k \leq 5$),表示你程序的长度。 接下来 $k$ 行,每行一条命令,格式与输入相同。

说明/提示

你可以在 [https://en.wikipedia.org/wiki/Bitwise\_operation](https://en.wikipedia.org/wiki/Bitwise_operation) 阅读有关位运算的介绍。 第二个样例说明: 设 $x$ 是 Petya 程序的输入,其输出为 $((x\&1)\&3)\&5=x\&(1\&3\&5)=x\&1$。因此这两个程序始终给出相同的输出。 由 ChatGPT 5 翻译