题目链接:https://codeforces.com/contest/1207/problem/E
题目大意:交互题,一共可以问两次,每次问100个数字,然后会返回一个这一百个数字中随机一个和答案异或的值,要求输出答案。,并且要求这200个数字不重复
题目思路:以为是个王者,结果是个青铜,TMD...想复杂了,看到题解差点喷血,这个题为啥rating1800啊???好吧我没写出来就是没写出来我就是弟弟
直接上来莽一发1~100(想到了这个但是没想到怎么用啊啊啊啊啊啊),然后发现100转换成2进制一共7位(这个也干了啊咋就没想到啊啊啊啊啊啊),所以无论被抽到哪个家伙跟答案异或,8~14位一定是答案的14位,毕竟1~100的这几位都是0,然后如法炮制,保住后7位是0,前7位就出来了,然后这题就结束了...当事人非常痛苦
以下是代码:
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
const int MAXN = 1e5+5;
const int MOD = 998244353;
int main(){
int ans=0,x;
printf("? ");
rep(i,1,100){
printf("%d%c",i,i==100?'\n':' ');
}
fflush(stdout);
scanf("%d",&x);
rep(i,7,14){
ans|=((1<<i)&x);
}
printf("? ");
rep(i,1,100){
printf("%d%c",i<<7,i==100?'\n':' ');
}
fflush(stdout);
scanf("%d",&x);
rep(i,0,6){
ans|=((1<<i)&x);
}
printf("! %d\n",ans);
fflush(stdout);
return 0;
}