acdream 1023 xor按位思考
思路:记答案为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按位思考相关推荐
- linux upper函数,使用XOR按位运算在linux中使用toupper和tolower函数
你很可能,但很难看出这一点. 异或:使用常量输入字节值并不比添加(或减去)常量快.并且它变成切换的好处(即toupper()和tolower()可以是相同的代码)非常小,因为代码量太小. 拆卸时,这两 ...
- --c语言运算符_C按位运算符-能力问题和解答
--c语言运算符 C programming Bitwise Operators Aptitude Questions and Answers: In this section you will fi ...
- C#关于64位双精度浮点数Double(DReal)一步步按位Bit进行解析
有一篇我们是获取float如何转化为字节的过程,这次我们测试double是如何转化为64位二进制的. C#关于32位浮点数Float(Real)一步步按位Bit进行解析 基本说明 浮点数的32位N=1 ...
- 黑白棋游戏 (BFS + 位运算初步运用)
题目描述 黑白棋游戏的棋盘由4×4方格阵列构成.棋盘的每一方格中放有1枚棋 子,共有8枚白棋子和8枚黑棋子.这16枚棋子的每一种放置方案都构成一个游戏状态.在棋盘上拥有1条公共边的2个方格称为相邻 ...
- java 异或无符号计算器_xor运算(xor异或计算器)
先把 21 和 2转换为 二进制 然后各个位计算异或1 xor 1=0 1 xor 0=1 0 xor 1=1 0 xor 0=0 最后的结果就是21xor2的结果 Xor 运算符 对两个表达式进行逻 ...
- 读书笔记——计算机科学导论
计算机科学导论-读书笔记 第一章 绪论 一.学习目标 1.定义计算机的图灵模型, 2.定义计算机的冯诺依曼模型 3.描述计算机的三大部分:硬件.数据和软件 4.列举与计算机硬件.软件.数据相关的话题 ...
- 《Java开发手册》解读:大整数传输为何禁用Long类型?
简介:最新发布的<Java开发手册(嵩山版)>增加了前后端规约,其中有一条:禁止服务端在超大整数下使用Long类型作为返回.这是为何?在实际开发中可能出现什么问题?本文从IEEE754浮点 ...
- MPU6050开发 -- 数据分析
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78661851 上一篇文章结尾,留了一些思考问题.现在只是得到MPU6050的 ...
- java基础 - 1
目录 第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Java虚拟机 4 类加载器 6 Windows环境变量 8 内容总结 13 独立实践 1 ...
最新文章
- DecimalFormat格式化输出带小数的数字类型
- java开发资源分享(视频,源码,项目)
- 【GAN优化】详解对偶与WGAN
- hibernate更新部分字段的几种方法
- 本科、硕士、博士的区别(终极版,太形象了!)
- 将米转换为度(经纬度) 画圆上下多出来一些区域
- App---mui页面无法滚动问题
- Java8 lambda 的使用
- Win11系统可以快速截屏吗?
- web-自动化测试流程
- 包无法进行更新、相关性或冲突验证。 (Exception from HRESULT: 0x80073CF3)的解决办法
- 【API】开源免费接口管理
- 判断司机是否酒后驾车
- HDU1116 Play on Words——欧拉路(有向图+并查集)
- C C++混合编译问题,gcc可以编译过,但是g++编译不过(restrict引起的问题)
- 2019纪中寒假培训
- Maven Nexus详解
- office 论文 页码_毕业论文word里面怎么弄以下这些页码?第一页不显示。 第二三页是I II ,四页开始以下是1234。求详细方法...
- C++大学教程(第二版)c++how to program Second Edition --电子工业出版社【美】harvey M.Deitel and paul James Deitel(更新中)
- 直接插入排序——监视哨的作用
热门文章
- oracle 分组排序后取第一条_关于oracle中位图索引的探讨:概念、原理、优缺点...
- matlab计算海洋浮力频率_帝国理工学院海洋、海岸与建筑环境工程流体力学理学硕士研究生offer一枚...
- 图论--SCC缩点--Tarjan
- c++从入门到进阶--引用与常量
- 如何使用CREO来导入多个带坐标系参数的零件的装配图档
- Python模块:日志输出—logging模块
- 【ubuntu-qt-dlib】 配置问题 (二) terminate called after throwing an instance of 'dlib::image_load_error'
- 【转载】用廉价的315M遥控模块实现数据传输
- 在OSX中制作加密压缩文件
- 小米 pegasus_使用Google的Pegasus库生成摘要