B3775 [信息与未来 2022] Mathler(暂无交互库)
题目描述
风靡全球的猜单词游戏有了数学版本!在这个游戏中,计算机会秘密产生一个隐藏的表达式,例如 $90/5\times 2=36$。但计算机不会把具体的表达式告诉你,而是只把表达式的计算结果(在前面的例子中是 $36$)告诉你。接下来,你需要用尽可能少的次数把这个表达式猜出来!
你可以和计算机多次互动完成猜测。在游戏的每一轮中,你都可以告诉计算机一个长度是 $6$ 的字符串表达式,仅由数字 $\texttt{0123456789}$ 和四则运算 $\texttt{+-*/}$ 构成,**表达式中不含负数且数字不包含前导零**,并且**表达式的计算结果必须是游戏开始时给出的数值**(在我们的例子中是 $36$)。计算机收到你猜测的表达式后,会对你给出表达式中每一个字符分别给出反馈:
- 绿色:这个字符出现在隐藏表达式中,且位置正确;
- 黄色:这个字符出现在隐藏表达式中,但位置不正确;
- 灰色:这个字符没有出现在隐藏表达式中。
下面是一个三次猜中隐藏表达式的例子:

在你猜了很多次以后,觉得这个游戏已经有些无聊了。现在你希望编一个程序,让你的程序代替你在 $12$ 次猜测之内得到隐藏的表达式。
输入格式
**本题为交互题,评测时会模拟键盘输入并读取程序的屏幕输出**。首先,评测程序会在键盘输入一行一个整数 $n$,代表隐藏表达式的计算结果,然后进入交互模式并等待你的程序输出一行(对隐藏的表达式进行猜测)。评测程序读取到你屏幕上的输出后,会及时用键盘输入的方式给出反馈。以下 C++ 代码片段可以实现与评测程序的交互(你需要补全其他必要的内容):
```cpp
cin >> n; // int n;
while (true) {
cout res; // string res; 计算机对猜测的反馈
if (res == "AAAAAA") {
break; // 游戏结束
}
}
```
在交互过程中,评测程序会及时地对你的输出给出反馈(作为键盘输入给程序):
- 对于不正确的表达式(例如有多余的空格、表达式不合法或值错误等),反馈六个半角减号($\texttt{"-"}$);
- 对于值正确的表达式,反馈六个字符,其中:
- $\texttt{"A"}$ 表示在表达式中出现且位置正确;
- $\texttt{"B"}$ 表示在表达式中出现且位置不正确;
- $\texttt{"X"}$ 表示在表达式中未出现。
注意隐藏表达式中同一个数字可能多次出现。如果你猜测的表达式中某个数字出现了多次,评测程序会优先给出 $\texttt{"A"}$ 的结果,然后从左到右给出 $\texttt{"B"}$ 的结果,多余的数字给出 $\texttt{"X"}$ 的结果。在 **$12$ 次猜测以内**得到 $\texttt{"AAAAAA"}$ 且程序正常终止即被判定为正确。
本题中四则运算规则:先乘除、后加减,同优先级从左到右计算,允许计算过程中出现负数。除法是有理数的除法而非整除,即 $\texttt{2/5*10}$ 的值为 $4$ 且禁止除零。完整的交互过程应在 $1$ 秒内完成;评测程序的运行时间很短,可以忽略不计。
输出格式
见输入格式。
说明/提示
样例组 $1$ 的交互过程对应了题图的交互过程,但中间有一次输入非法表达式的情况。
对于 $50\%$ 的数据,隐藏表达式至多只包含两个运算符,且运算符只有加法和减法。
对于 $100\%$ 的数据,$1\leq n\leq 999,999$。保证至少存在一个计算结果等于 $n$ 的表达式。