#CF2109C1. 黑客数字(简单版本)
黑客数字(简单版本)
当前没有测试数据。
- 每个测试的时间限制: 秒
- 内存限制: MB
题目描述
这是一个交互式问题。
欢迎,决斗者们!在这个交互挑战中,存在一个未知的整数 ()。
你需要让 等于输入中给定的整数 。
借助“电脑堺”怪兽的力量,你可以发送一条命令,执行以下操作之一:
| 命令 | 约束 | 结果 | 操作成功时 | 判题程序响应 |
|---|---|---|---|---|
add y |
若 ,则 | "1" |
||
| 否则 不变 | "0" |
|||
mul y |
若 ,则 | "1" |
||
| 否则 不变 | "0" |
|||
div y |
若 整除 ,则 | "1" |
||
| 否则 不变 | "0" |
|||
digit |
— | "1" |
||
注:
- 表示非负整数 的各位数字之和。
例如:。
你需要使用 最多 条命令 使 等于 。
输入格式
每个测试包含多个测试用例。
第一行包含一个整数 (),表示测试用例的数量。
接下来每个测试用例的第一行(也是唯一一行)包含一个整数 ()。
交互格式
对于每个测试用例,先读入整数 。
要发送命令,请按以下格式输出一行:
-
add y:将 加到 。
判题程序会输出"1"表示成功( 在 内),否则输出"0"。
若成功,则更新 。 -
mul y:将 乘以正整数 。
判题程序会输出"1"表示成功( 在 内),否则输出"0"。
若成功,则更新 。 -
div y:将 除以正整数 。
判题程序会输出"1"表示成功( 整除 ),否则输出"0"。
若成功,则更新 。 -
digit:将 替换为其各位数字之和 。
判题程序总是输出"1",并更新 。
注意:命令区分大小写。
当你确定 等于 时,输出以下格式的一行:
!
此时判题程序会输出 "1" 表示 等于 ,否则输出 "-1"。
注意:这个回答不计入 条命令的限制。
错误处理
- 如果程序对某个测试用例发送的命令超过 条,或发送了无效命令,则判题程序会回复
"-1"。 - 收到
"-1"后,程序应立即终止,否则会得到Wrong Answer。 - 否则可能得到任何其它判题结果。
刷新输出
输出每条命令后,必须刷新输出缓冲区,否则会得到 Idleness limit exceeded。
C++ 中可以使用:
fflush(stdout) 或 cout.flush()
交互示例
输入:
2
100
0
1
1
1
5
1
1
1
输出:
add -10
add 1
mul 10
!
digit
div 2
!
说明:
-
第一组测试:未知数 ,需要让 。
add -10→ 返回"0",因为 , 仍为add 1→ 返回"1",mul 10→ 返回"1",!→ 返回 `"1",正确
-
第二组测试:未知数 ,需要让 。
digit→div 2→!→ 返回 `"1",正确
示例中的空行仅为清晰起见,实际交互中不会出现。