P6720 [BalkanOI 2011] decrypt

题目背景

这是一道 **IO 交互题**。

题目描述

我们随机了三个数 $R_0,R_1,R_2$,并按以下规则生成了整个 $R$ 序列: $$R_n=R_{n-2}\oplus R_{n-1}$$ 其中 $\oplus$ 为异或运算。 此外我们有一个函数 $M$,其是一个双射,即我们保证对于 $x\not=y$,$M(x)\not=M(y)$。 您的目标是,经过多次询问后,确定 $R_0,R_1,R_2,M(0),M(1),\ldots,M(255)$。 #### 交互方式 你的程序应从标准输入中读入,向标准输出中输出。 您可以向标准输出中输出一个整数 $A$,如果这是您的第 $N$ 次询问,您将会读入: $$M(A\oplus R_{N-1})$$ 如果您已经得到了所有答案,请输出一行字符串 `SOLUTION`,然后输出 $259$ 行,分别是 $R_0,R_1,R_2,M(0),M(1),\ldots,M(255)$。 **记得在输出每一行后清空缓冲区!**

输入格式

输出格式

说明/提示

#### 样例 (因为样例组不好表示所以放到这里) 我们人为规定 $R_0=0,R_1=1,R_2=3,M(i)=(i+1)\bmod 256$。 可得 $R_3=1$。 | 输出 | 输入 | 解释 | | :-: | :-: | :-: | | $10$ | $11$ | $M(10\oplus 0)=M(10)=11$ | | $10$ | $12$ | $M(10\oplus 1)=M(11)=12$ | | $11$ | $9$ | $M(11\oplus 3)=M(8)=9$ | | $12$ | $14$ | $M(12\oplus 1)=M(13)=14$ | | … | | 省略了一部分输出 | | ``SOLUTION`` | | 省略了一部分输出 | #### 数据范围及限制 对于 $100\%$ 的数据,保证输入的数、输出的数、$R$ 数组、$M(x)$ 中的 $x$ 与 $M(x)$ 均 $\ge 0$ 且 $\le 255$。 #### 计分策略 如果您输出的数并不在上述范围内,您保龄。 您的询问次数需要少于 $320$,否则,您保龄。 #### 提示 清空缓冲区的方法: C: ```c printf("%d\n", q); fflush(stdout); ``` C++: ```cpp cout