CF1840G1 In Search of Truth (Easy Version)
题目描述
简单版和困难版的唯一区别在于最多允许的询问次数。在本题中,你最多可以进行 $2023$ 次询问。
这是一个交互题。
你正在玩一个游戏。圆被分成了 $n$ 个扇区,扇区按某种顺序编号为 $1$ 到 $n$。你在隔壁房间,并不知道扇区的数量,也不知道它们的编号。还有一个指针,最初指向某个扇区。最开始,主持人会告诉你指针所指向的扇区编号。之后,你可以要求主持人将指针顺时针或逆时针移动 $k$ 个扇区,最多可以询问 $2023$ 次。每次移动后,主持人会告诉你当前指针所指向的扇区编号。
你的任务是在不超过 $2023$ 次询问内,确定整数 $n$ —— 扇区的总数。
保证 $1 \le n \le 10^6$。
输入格式
输入包含一个整数 $x$($1 \le x \le n$),表示初始时指针所指向的扇区编号。
输出格式
在你确定了整数 $n$(扇区总数)后,应输出 "! n"($1 \le n \le 10^6$)。输出后程序应立即终止。
注意,输出答案不计入询问次数。
保证整数 $n$ 以及扇区的编号在初始时已固定,评测程序不会根据你的询问改变这些值。
交互说明
读入输入描述后,你可以进行如下两种类型的询问:
1. "+ k"($0 \le k \le 10^9$)——要求将指针顺时针移动 $k$ 个扇区。
2. "- k"($0 \le k \le 10^9$)——要求将指针逆时针移动 $k$ 个扇区。
每次询问后,你应读入一个整数 $x$($1 \le x \le n$),表示当前指针所指向的扇区编号。
你最多可以进行 $2023$ 次询问。
如果询问次数过多,将会得到 Wrong answer。
每次输出询问或答案后,不要忘记输出换行并刷新输出缓冲区,否则会得到 Idleness limit exceeded。具体做法如下:
- C++:fflush(stdout) 或 cout.flush()
- Java:System.out.flush()
- Pascal:flush(output)
- Python:stdout.flush()
- 其它语言请查阅相关文档。
说明/提示
Hack 数据格式
Hack 时请使用如下格式:
第一行输出一个整数 $n$($1 \le n \le 10^6$),表示扇区总数。
第二行输出 $n$ 个互不相同的整数 $1 \le a_1, a_2, \dots, a_n \le n$,表示顺时针方向上各扇区的编号,指针初始指向编号为 $a_1$ 的扇区。
由 ChatGPT 4.1 翻译