题目链接:点击查看

题目大意:交互题猜密码,设原密码为 xxx,猜的密码为 yyy,如果没猜到,密码会自适应变成 zzz,满足 x⊕z=yx \oplus z=yx⊕z=y ,最多猜 nnn 次

题目分析:首先不难看出,x⊕z=yx \oplus z=yx⊕z=y,新密码 zzz 其实就是 x⊕yx \oplus yx⊕y

一开始想按位拆分的,可惜没什么思路,偏偏忘记了异或运算最重要的一个性质,就是它的自反性

那么我们就假设每次密码都不变,然后挨个猜不就行了吗?

假设我们已经尝试过的询问的异或和为 sumsumsum,即 sum=q1⊕q2⊕...⊕qksum=q_1 \oplus q_2 \oplus ... \oplus q_ksum=q1​⊕q2​⊕...⊕qk​,qiq_iqi​ 代表我们第 iii 次猜的数字。再假设密码初始时为 passwordpasswordpassword,现在密码已经变成了 password⊕sumpassword \oplus sumpassword⊕sum。新的一轮我打算猜 passwordpasswordpassword 是否等于 xxx,那么我们只需要去询问此时的密码是否等于 x⊕sumx \oplus sumx⊕sum 即可,因为判断 password⊕sumpassword \oplus sumpassword⊕sum 和 x⊕sumx \oplus sumx⊕sum 是否相等,只需要根据异或运算的自反性就能得到了。

所以依次枚举就可以了

D2 明天再看吧,感觉对比本题而言,应该只是多了个模拟罢了

代码:

// Problem: D1. RPD and Rap Sheet (Easy Version)
// Contest: Codeforces - Codeforces Round #730 (Div. 2)
// URL: https://codeforces.com/contest/1543/problem/D1
// Memory Limit: 256 MB
// Time Limit: 5000 ms
//
// Powered by CP Editor (https://cpeditor.org)// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#define lowbit(x) x&-x
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=1e6+100;
int main()
{#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--) {int n,k,sum=0;read(n),read(k);for(int i=0;i<n;i++) {printf("%d\n",sum^i);fflush(stdout);int ans;scanf("%d",&ans);if(ans==1) {break;} else {sum^=sum^i;}}}return 0;
}

CodeForces - 1543D1 RPD and Rap Sheet (Easy Version)(异或+交互)相关推荐

  1. CodeForces - 1543D2 RPD and Rap Sheet (Hard Version)(交互+模拟)

    题目链接:点击查看 题目大意:交互题猜密码,设原密码为 xxx,猜的密码为 yyy,如果没猜到,密码会自适应变成 zzz,满足 x⊕z=yx \oplus z=yx⊕z=y ,最多猜 nnn 次,对于 ...

  2. CodeForces Round #730 D1. RPD and Rap Sheet (Easy Version)题解

    Codeforces Round #730 (Div. 2) 题意: t组数据,每组给一个n和k,(easy version里面k=2) 每一次系统会输入一个初始的密码(初始密码是一个在[0,n−1] ...

  3. Codeforces Round #730 (Div. 2) D1. RPD and Rap Sheet (Easy Version)

    传送门 思路: 假设0到n-1之间的数为密码,则可以想到一个可行的解法: 第一次输出0,之后的每一次都输出(i−1)⊕(i−2)(i-1)⊕(i-2)(i−1)⊕(i−2). 假设答案为x,那么第一次 ...

  4. D1. RPD and Rap Sheet (Easy Version) (交互题+构造)

    题意: 交互题,有一个初始密码xxx,只有nnn次猜测机会,假如猜了yyy,x!=yx!=yx!=y,那么密码就会变成x⨁yx\bigoplus yx⨁y. 题解: 设第iii次猜测的数为pip_ip ...

  5. Codeforces Round #730 (Div. 2) D2. RPD and Rap Sheet (Hard Version) 交互 + k进制的转换

    传送门 文章目录 题意: 思路: 题意: 定义a⊕kba\oplus_k ba⊕k​b为a,ba,ba,b在kkk进制下的不进位加法.系统会随机生成一个数xxx,你猜这个数,假设当前猜的数为yyy,如 ...

  6. RPD and Rap Sheet (Hard Version)(交互题,不进位加法、不退位减法)

    传送门 题目: 定义 a⊕kba \oplus_k ba⊕k​b表示整数 aaa 与 bbb的在 kkk进制下的不进位加法.特别的,当 k=2k = 2k=2 时,这一操作可以称为位运算的异或. 给定 ...

  7. 【CodeForces 1255E1 --- Send Boxes to Alice [Easy Version]】

    [CodeForces 1255E1 --- Send Boxes to Alice [Easy Version]] Description This is the easier version of ...

  8. Codeforces Round #730 (Div. 2) D. RPD and Rap Sheet (交互,从easy到hard)

    easy hard 题意 已知密码是kkk进制数,在十进制下是[0,n−1][0,n-1][0,n−1]之间,你有至多nnn次机会猜测这个数 设你猜的数字是yyy,如果答案正确,系统会返回111 如果 ...

  9. 【Codeforces 1118D1】Coffee and Coursework (Easy version)

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 从小到大枚举天数. 然后贪心地,从大到小分配a[i]到各个天当中. a[n]分配到第1天,a[n-1]分配到第2天,...然后a[n-x]又分 ...

最新文章

  1. 10行代码实现目标检测,请收下这份教程
  2. SpringBoot 页面跳转后css和js效果都无效了
  3. mongodb查询值不为空_MongoDB使用规范(上)
  4. Windows10,Maven配置 电脑重启失效
  5. require.js用法简介
  6. Java 多线程 之 Runnable
  7. leecode第二百九十二题(Nim游戏)
  8. canny边缘检测_每日习题-图像处理-Canny边缘检测(2020.4.15)
  9. 常用图像数据集大全(分类,跟踪,分割,检测等)
  10. 基于S7-200 PLC控制的小型自动化立体仓
  11. Unity喷墨效果Shader实现
  12. 苹果VS谷歌,开战了?
  13. Erase/Trim/Discard/Sanitize 区别详解
  14. java 使用poi HSSFWorkbook导出xls文件 office打不开,提示文件损坏,wps能打开。
  15. 华为2020年鸿蒙系统发布会,2021年6月2日华为发布会内容是什么?将正式发布鸿蒙手机操作系统...
  16. java 公历 农历_Java给定公历日期计算相应农历/阴历日期
  17. Python 引入模块后VsCode出现问题提示 “could not be resolved” 解决方案
  18. 学python还是scratch_我们的孩子该学习Scratch还是Python?
  19. Angular4_修改你的appc-开头
  20. ROS2极简总结-Nav2-地图和自适应蒙特卡洛定位

热门文章

  1. python程序打完后怎么保存_如何保存要在之后使用的值应用程序执行()在python中退出?...
  2. 并发的发展历史-真空管和穿孔打卡
  3. MyBatis 实际使用案例-typeAliases
  4. 什么是控制反转(IOC)?什么是依赖注入?
  5. ThemeResolver
  6. 深入理解条件过滤Conditional
  7. 负责域名解析的DNS服务
  8. 定时任务 - 构建定时任务task
  9. Executor家族的辨析
  10. Oracle之垂直水平分库分表(一)