B3775 [信息与未来 2022] Mathler(暂无交互库)

题目描述

风靡全球的猜单词游戏有了数学版本!在这个游戏中,计算机会秘密产生一个隐藏的表达式,例如 $90/5\times 2=36$。但计算机不会把具体的表达式告诉你,而是只把表达式的计算结果(在前面的例子中是 $36$)告诉你。接下来,你需要用尽可能少的次数把这个表达式猜出来! 你可以和计算机多次互动完成猜测。在游戏的每一轮中,你都可以告诉计算机一个长度是 $6$ 的字符串表达式,仅由数字 $\texttt{0123456789}$ 和四则运算 $\texttt{+-*/}$ 构成,**表达式中不含负数且数字不包含前导零**,并且**表达式的计算结果必须是游戏开始时给出的数值**(在我们的例子中是 $36$)。计算机收到你猜测的表达式后,会对你给出表达式中每一个字符分别给出反馈: - 绿色:这个字符出现在隐藏表达式中,且位置正确; - 黄色:这个字符出现在隐藏表达式中,但位置不正确; - 灰色:这个字符没有出现在隐藏表达式中。 下面是一个三次猜中隐藏表达式的例子: ![](https://cdn.luogu.com.cn/upload/image_hosting/mqcqa6b5.png) 在你猜了很多次以后,觉得这个游戏已经有些无聊了。现在你希望编一个程序,让你的程序代替你在 $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$ 的表达式。