一台密码机按照以下的方式产生密码:首先往机器中输入一系列数,然后取出其中一部分数,将它们异或以后得到一个新数作为密码。现在请你模拟这样一台密码机的运行情况,用户通过输入控制命令来产生密码。
密码机中存放了一个数列,初始时为空。密码机的控制命令共有3种:
ADD <Number>
把<Number>加入到数列的最后。
REMOVE <Number>
在数列中找出第一个等于<Number>的数,把它从数列中删除。
XOR BETWEEN <Number1> AND <Number2>
对于数列中所有大于等于<Number1>并且小于等于<Number2>的数依次进行异或,输出最后结果作为密码。如果只有一个数满足条件,输出这个数。如果没有任何数满足条件,输出0。
你可以假设用户不会REMOVE一个不存在于数列中的数,并且所有输入的数都不超过20000

这题有点智商题的感觉;

xor运算符满足一个性质,就是一个数连续xor一个数两次,这个数不变;

可以利用树状数组,每次add或remove直接xor就行,find的时候找到right的xor结果,left的xor结果,两个再xor,这样重复的就会直接消掉;

实现很简单,想通就行了;

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<ctime>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
#define LL long long
const int n=;
int c[n];
int lowbit(int x){return x&-x;}
void add(int x,int y){while(x<=n){c[x]^=y;x+=lowbit(x);}}
int find(int x){int ans=;while(x>){ans^=c[x];x-=lowbit(x);}return ans;}
int read(){
int x=;bool flag=;char ch=getchar();
while(ch<''||ch>''){ch=getchar();if(ch=='-')flag=;}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return flag?-x:x;
}
void init(){
char s[];
while(scanf("%s",s)!=EOF){
if(s[]=='A'||s[]=='R'){
int x=read();
add(x,x);
}
if(s[]=='X'){
int x=read(),y=read();
if(x>y){
printf("0\n");
continue;
}
int p=find(x-),q=find(y);
cout<<(p^q)<<endl;
}
}
}
int main(){
init();
}

最新文章

  1. NTFS交换数据流隐写的应用
  2. 关于mongoDB的思考和nodeJS执行windows系统命令
  3. 使用autotools系列工具自动部署源代码编译安装
  4. Android WebView访问SSL证书网页(onReceivedSslError)
  5. ListView的addAll方法
  6. Codevs 1081 线段树练习2
  7. apache开源项目--dbutils
  8. PHP初学留神(一)
  9. 排序算法简介及其C实现
  10. BZOJ 2196: [Usaco2011 Mar]Brownie Slicing( 二分答案 )
  11. 长安大学ACM竞赛部
  12. JavaScript DOM编程艺术-学习笔记
  13. CSS3秘笈:第十一章
  14. 【poj解题】3663
  15. linux 下 Fatal error: Class ‘mysqli’ not found in
  16. JAVA_SE基础——5.第一个Java程序HelloWorld&注释的应用
  17. SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例
  18. css中bfc和ifc
  19. redist命令操作(一)--键key,字符串String
  20. oracle基础函数--decode

热门文章

  1. 牛客网 牛客小白月赛1 C.分元宵-快速幂
  2. 洛谷——P2404 自然数的拆分问题
  3. maven项目对于maven远程仓库没有资源的解决办法
  4. Hystrix的介绍和简单使用
  5. BZOJ3270 博物館 概率DP 高斯消元
  6. this.class.getClassLoader().getResourceAsStream
  7. PHP平均小数红包算法
  8. 用Redis存储Tomcat集群的Session(转载)
  9. 【Protocol Buffers】grpc默认使用的Google 开源的一套成熟的结构数据序列化机制
  10. 一天时间用OpenFire打造自己的IM聊天工具