这是一道交互题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
本题为交互题。
本题交互库运行时间保证小于 1500 ms。
题目描述
有一个长度为 的序列 。你可以进行若干次询问来求出整个序列每个数的和。
有以下三种询问:
-
查询序列中两个数按位与的结果
-
查询序列中两个数按位或的结果
-
输出答案。
交互格式
刚开始交互库会给你输出一个整数 ,表示序列的长度,你可通过读入一个整数来获得这个值。
每个询问占一行。
-
你的程序询问
1 i j后交互库会输出 和 按位与的结果,你可通过读入一个整数来获得这个结果。注意,如果你的询问中 ,该测试点你将获得 分。 -
你的程序询问
2 i j后交互库会输出 和 按位或的结果,你可通过读入一个整数来获得这个结果。注意,如果你的询问中 ,该测试点你将获得 分。 -
你的程序询问
3 i,交互库会判断答案是否与 相等。相等会返回 AC,不相等会返回 WA。
输出询问后请刷新缓冲区,否则可能会造成 TLE。
你可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout); - 可以使用
endl作为换行,endl会强制刷新缓冲区。 其他的你也不用
评分标准
- 如果输出正确结果,则 AC,但该点不一定获得全分,具体标准如下:
- 如果询问次数小于等于 ,你可获得该测试点全部分数
- 如果你的询问次数大于 ,该测试点你获得 分。
- 如果你的询问次数大于 且小于等于 ,你的分数为 , 为你的询问次数。
- 如果询问非法,或结果错误,或次数超限,则 WA
- 其他的与传统题一样
提示
为了防止大家不会IO式交互,我们准备了一份示例代码。
请注意,IO式交互与CCF常使用的函数式交互不同,大家在正赛时应以题目要求为准。
#include<bits/stdc++.h>
using namespace std;
int n;
signed main(){
cin>>n;//读入序列长度。
/*
1.这是一份示例代码,与正确做法无任何关联。
2.请使用 endl 进行换行。
*/
cout<<"1"<<" "<<1<<" "<<2<<endl;//第一类,查询两个数按位与。
int x;
cin>>x;//读入第一个数和第二个数按位与的值。
cout<<"2"<<" "<<3<<" "<<4<<endl;//第二类,查询两个数的或。
cin>>x;//读入第三个数和第四个数按位或的值。
int ans=114514;
cout<<"3 "<<ans<<endl;//第三类,输出答案。
return 0;
}
样例
input
3
3
0
output
2 1 2
1 1 2
3 6
解释
仅供参考。序列为 .
数据范围
。