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