#E. [CZOJ 一周一测 R17 E] 送分题 5(阿瓦的电脑)

    交互题 4000ms 256MiB

[CZOJ 一周一测 R17 E] 送分题 5(阿瓦的电脑)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

阿瓦的电脑上有一个长度为 nn 的序列,你可以进行至多 3n+13n+1 次询问,询问格式如下:

  • ? 1 x y,如果你使用这个询问,则交互库会告诉你 ax & 2aya_x \ \& \ 2a_y 的值。

  • ? 2 x y,如果你使用这个询问,则交互库会告诉你 ax  2aya_x \ | \ 2a_y 的值。

  • ? 3 x y,如果你使用这个询问,则交互库会告诉你 ax2aya_x \oplus 2a_y 的值。

其中,&\& 表示按位与运算,| 表示按位或运算,\oplus 表示异或运算。

在询问后,你需要求出 $\sum_{i=1}^{n}\sum_{j=i}^{n}{(a_i \ | \ a_{i+1} \ | \ a_{i+2} \ | \ \dots \ | \ a_j)}$ 的值,由于这个数可能很大,因此你需要将结果对 109+910^9 + 9 取模。

输入格式

本题为交互题,交互格式如下:

首先题目会给你一个正整数 nn,然后你需要在至多 3n+13n + 1 次询问中找到答案,询问格式如下:

  • ? 1 x y,如果你使用这个询问,则交互库会告诉你 ax & 2aya_x \ \& \ 2a_y 的值。

  • ? 2 x y,如果你使用这个询问,则交互库会告诉你 ax  2aya_x \ | \ 2a_y 的值。

  • ? 3 x y,如果你使用这个询问,则交互库会告诉你 ax2aya_x \oplus 2a_y 的值。

其中,&\& 表示按位与运算,| 表示按位或运算,\oplus 表示异或运算。

  • ! x,在询问次数到 3n+13n + 1 次之前,你可以使用这个操作,这说明你已经知道了答案,你需要返回一个数 xx 表示你的答案,若你的答案 xx 正确,则交互库会给出 Accepted 的结果,否则,交互库会给出 Wrong Answer 的结果。

特别的,你每次询问时的 x,yx,y 都要满足 1x,yn1 \le x,y \le n 的条件。

每次你输出之后,请刷新缓冲区

你可以使用如下语句来清空缓冲区:

  • 对于 C/C++:fflush(stdout)
  • 对于 C++:std::cout << std::flush
  • 对于 Java:System.out.flush()
  • 对于 Python:stdout.flush()
  • 对于 Pascal:flush(output)
  • 对于其他语言,请自行查阅对应语言的帮助文档。

特别的,对于 C++ 语言,在输出换行时如果你使用 std::endl 而不是 '\n',也可以自动刷新缓冲区。

输出格式

见输入格式。

样例 #1

样例输入 #1

1

3

样例输出 #1

? 3 1 1

! 1

提示

【样例解释】

只有 11 满足 1(1×2)=31 \oplus (1 \times 2) = 3 的条件。

【评分方式】

若你的询问次数小于等于 3n+13n + 1 次且答案正确,可以获得 测试点 40%40\% 的分数。

若你的询问次数小于等于 2n+12n + 1 次且答案正确,可以获得 测试点 70%70\% 的分数。

若你的询问次数小于等于 n+1n + 1 次且答案正确,可以获得 测试点 100%100\% 的分数。

否则,你不会获得分数。

【数据范围】

对于 70%70\% 的数据,n=1n = 1

对于 80%80\% 的数据,n800n \le 800

对于 90%90\% 的数据,n8000n \le 8000

对于 100%100\% 的数据,n105n \le 10^51ai<2601 \le a_i < 2^{60}

[CZR-017] CZOJ Weekly Exercise Round 17——Hello2025 & 良心场

未参加
状态
已结束
规则
IOI
题目
6
开始于
2025-1-1 17:00
结束于
2025-1-1 22:00
持续时间
5 小时
主持人
参赛人数
23