思路:记答案为ans,统计出数列A和B在某二进制某一位上有多少个1,如果个数相同,则ans那一位上为0(因为题目要求最小的满足条件的值),如果不一样(则需要考虑那一位上异或个1),则判断数列A在那一位上0的个数是否等于数列B那一位上1的个数,不等于则无解,否则,那一位上set为1,继续判断。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5
 6 const int N = 31;
 7 int cnt1[N];
 8 int cnt2[N];
 9
10 void decompose( int num, int * a )
11 {
12     int p = 0;
13     while ( num )
14     {
15         p++;
16         if ( num & 1 )
17         {
18             a[p]++;
19         }
20         num >>= 1;
21     }
22 }
23
24 int main ()
25 {
26     int n, tmp;
27     while ( scanf("%d", &n) != EOF )
28     {
29         memset( cnt1, 0, sizeof(cnt1) );
30         for ( int i = 0; i < n; i++ )
31         {
32             scanf("%d", &tmp);
33             decompose( tmp, cnt1 );
34         }
35         memset( cnt2, 0, sizeof(cnt2) );
36         for ( int i = 0; i < n; i++ )
37         {
38             scanf("%d", &tmp);
39             decompose( tmp, cnt2 );
40         }
41         int ans = 0;
42         bool flag = true;
43         for ( int i = 1; i < N; i++ )
44         {
45             if ( cnt1[i] == cnt2[i] ) continue;
46             if ( cnt1[i] + cnt2[i] == n )
47             {
48                 ans += ( 1 << ( i - 1 ) );
49             }
50             else
51             {
52                 flag = false;
53                 break;
54             }
55         }
56         if ( !flag )
57         {
58             ans = -1;
59         }
60         printf("%d\n", ans);
61     }
62     return 0;
63 }

转载于:https://www.cnblogs.com/huoxiayu/p/4694590.html

acdream 1023 xor按位思考相关推荐

  1. linux upper函数,使用XOR按位运算在linux中使用toupper和tolower函数

    你很可能,但很难看出这一点. 异或:使用常量输入字节值并不比添加(或减去)常量快.并且它变成切换的好处(即toupper()和tolower()可以是相同的代码)非常小,因为代码量太小. 拆卸时,这两 ...

  2. --c语言运算符_C按位运算符-能力问题和解答

    --c语言运算符 C programming Bitwise Operators Aptitude Questions and Answers: In this section you will fi ...

  3. C#关于64位双精度浮点数Double(DReal)一步步按位Bit进行解析

    有一篇我们是获取float如何转化为字节的过程,这次我们测试double是如何转化为64位二进制的. C#关于32位浮点数Float(Real)一步步按位Bit进行解析 基本说明 浮点数的32位N=1 ...

  4. 黑白棋游戏 (BFS + 位运算初步运用)

    题目描述   黑白棋游戏的棋盘由4×4方格阵列构成.棋盘的每一方格中放有1枚棋 子,共有8枚白棋子和8枚黑棋子.这16枚棋子的每一种放置方案都构成一个游戏状态.在棋盘上拥有1条公共边的2个方格称为相邻 ...

  5. java 异或无符号计算器_xor运算(xor异或计算器)

    先把 21 和 2转换为 二进制 然后各个位计算异或1 xor 1=0 1 xor 0=1 0 xor 1=1 0 xor 0=0 最后的结果就是21xor2的结果 Xor 运算符 对两个表达式进行逻 ...

  6. 读书笔记——计算机科学导论

    计算机科学导论-读书笔记 第一章 绪论 一.学习目标 1.定义计算机的图灵模型, 2.定义计算机的冯诺依曼模型 3.描述计算机的三大部分:硬件.数据和软件 4.列举与计算机硬件.软件.数据相关的话题 ...

  7. 《Java开发手册》解读:大整数传输为何禁用Long类型?

    简介:最新发布的<Java开发手册(嵩山版)>增加了前后端规约,其中有一条:禁止服务端在超大整数下使用Long类型作为返回.这是为何?在实际开发中可能出现什么问题?本文从IEEE754浮点 ...

  8. MPU6050开发 -- 数据分析

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78661851 上一篇文章结尾,留了一些思考问题.现在只是得到MPU6050的 ...

  9. java基础 - 1

    目录 第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Java虚拟机 4 类加载器 6 Windows环境变量 8 内容总结 13 独立实践 1 ...

最新文章

  1. DecimalFormat格式化输出带小数的数字类型
  2. java开发资源分享(视频,源码,项目)
  3. 【GAN优化】详解对偶与WGAN
  4. hibernate更新部分字段的几种方法
  5. 本科、硕士、博士的区别(终极版,太形象了!)
  6. 将米转换为度(经纬度) 画圆上下多出来一些区域
  7. App---mui页面无法滚动问题
  8. Java8 lambda 的使用
  9. Win11系统可以快速截屏吗?
  10. web-自动化测试流程
  11. 包无法进行更新、相关性或冲突验证。 (Exception from HRESULT: 0x80073CF3)的解决办法
  12. 【API】开源免费接口管理
  13. 判断司机是否酒后驾车
  14. HDU1116 Play on Words——欧拉路(有向图+并查集)
  15. C C++混合编译问题,gcc可以编译过,但是g++编译不过(restrict引起的问题)
  16. 2019纪中寒假培训
  17. Maven Nexus详解
  18. office 论文 页码_毕业论文word里面怎么弄以下这些页码?第一页不显示。 第二三页是I II ,四页开始以下是1234。求详细方法...
  19. C++大学教程(第二版)c++how to program Second Edition --电子工业出版社【美】harvey M.Deitel and paul James Deitel(更新中)
  20. 直接插入排序——监视哨的作用

热门文章

  1. oracle 分组排序后取第一条_关于oracle中位图索引的探讨:概念、原理、优缺点...
  2. matlab计算海洋浮力频率_帝国理工学院海洋、海岸与建筑环境工程流体力学理学硕士研究生offer一枚...
  3. 图论--SCC缩点--Tarjan
  4. c++从入门到进阶--引用与常量
  5. 如何使用CREO来导入多个带坐标系参数的零件的装配图档
  6. Python模块:日志输出—logging模块
  7. 【ubuntu-qt-dlib】 配置问题 (二) terminate called after throwing an instance of 'dlib::image_load_error'
  8. 【转载】用廉价的315M遥控模块实现数据传输
  9. 在OSX中制作加密压缩文件
  10. 小米 pegasus_使用Google的Pegasus库生成摘要