UVALive 6918 And Or(位运算)
来源:互联网 发布:工信部大数据认证 编辑:程序博客网 时间:2024/05/22 13:55
题目地址 :https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4930
位运算的一道题。
A |(A+1)|(A+2)|…..B 的最终值为A和B二进制位从高到低遇到第一个不相同的位时,后面全部取1的二进制所得的值。同理 A&(A+1)&(A+2)&………B的最终值为后面全部取0所得二进制转化为十进制的值。
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <queue>#include <vector>using namespace std;int main(){ int n; int kase = 0; scanf("%d", &n); while(n--) { long long int x, y; scanf("%lld %lld", &x, &y); long long int tmp1; tmp1 = 1l; tmp1 <<= 62; while(((tmp1 & x) == (tmp1 & y)) && tmp1)//从long long int 最高位开始, 判断x, y的每一位二进制位是否相同, 不相同时退出循环 { tmp1 >>= 1; } long long int _and = 0; long long int _or = 0; while(tmp1)//从不同的二进制位开始,tmp1的全部位取1, 然后与y按位或即可得到第一个答案 { _or |= tmp1; tmp1 >>= 1; } long long int ans1 = (y | _or); _and = ~_or;//全部取反,与y按位与得到第二个答案 long long int ans2 = (x & _and); printf("Case %d: %lld %lld\n", ++kase, ans1, ans2); } return 0;}
阅读全文
0 0
- UVALive 6918And Or(位运算)
- UVALive 6918 And Or(位运算)
- python之位运算,and , or
- delphi and or ....位运算详解
- UVALive 6918 And Or 数学二进制+枚举
- UVALive - 6809 Spokes Wheel(位运算)
- delphi 按位运算 not and or xor shl shr
- 按位运算,窗体程序,And,Or,Xor
- UVALive 7279 Sheldon Numbers(位运算、暴力、想法)
- UVALive 7279 Sheldon Numbers(位运算、暴力)
- UVALive 3351 Easy and Not Easy Sudoku Puzzles 位运算~判断简单数独
- SQL AND & OR (运算符)
- Perl and or 运算
- AND & OR 运算符
- UVALive 6284 Hyperdrome 位运算+has
- UVALive 7279 Sheldon Numbers 【位运算】【暴力】
- 位运算 之按位与(AND)& 操作
- Rightmost Digit(快速幂+数学知识OR位运算)
- STM32使用ADC+电位器测电压
- java.util.Date和java.sql.Date的区别及应用
- DrawerLayout简单实用(内嵌ViewPager与TabLayout)
- Java中,如何把ascii码转换成字符?
- HDU 2018 母牛的故事
- UVALive 6918 And Or(位运算)
- Periodic Strings—Uva455
- 【牛腩】-css核心内容
- 2017.8.3------数独
- C++课程设计报告--通讯录管理系统
- ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock
- PHP之文件下载
- java代理设计模式
- centos6.8 安装VNC桌面