• 【题解】CF1207E XOR Guessing


    Link

    这是一道交互题。

    ( ext{Solution:})

    观察到猜的数范围只有(2^{14}.)

    我第一次想到的方法是,我们可以确定系统选择的两个数的异或和,用这个异或和去穷举所有目标数,如果有符合条件的就输出。

    但是,这样是无法唯一确定答案的。因为选择数是随机的,所以如果这样没梦想的去做,是无法唯一确定的。

    换一种思路:因为它的二进制位只有(14)位,我们可以把它分成两个部分,一部分前七位都是(0),另一部分后七位位(0)。于是每一次询问,我们可以确定它的前七位和后七位。

    答案就这样唯一确定了。

    注意,(endl)自带(fflush.)所以代码里面没有写。

    #include<bits/stdc++.h>
    using namespace std;
    int a[200],b[200],A,B;
    int ans[200],res;
    int main(){
    	for(int i=1;i<=100;++i){
    		a[i]=i;
    		b[i]=i<<7;
    	}
    	cout<<"? ";
    	for(int i=1;i<=100;++i)cout<<a[i]<<" ";
    	cout<<endl;
    	cin>>A;
    	//for(int i=101;i<=200;++i)b[i-100]=i;
    	cout<<"? ";
    	for(int i=1;i<=100;++i)cout<<b[i]<<" ";
    	cout<<endl;
    	cin>>B;
    	res|=((A&(((1<<7)-1))<<7));
    	res|=(B&((1<<7)-1));
    	cout<<"! "<<res<<endl;
    	return 0;
    } 
    
  • 相关阅读:
    定时机制
    选择排序
    二分插入排序
    无名管道pipe
    Makefile
    Python下划线与命名规范
    Django IDE 开发环境的搭建
    Apache如何添加虚拟目录
    在Eclipse下如何安装插件
    Python的模块、包等概念的理解
  • 原文地址:https://www.cnblogs.com/h-lka/p/12899941.html
Copyright © 2020-2023  润新知