Bits*
来源:互联网 发布:java 静态方法调用 编辑:程序博客网 时间:2024/05/22 02:05
Let's denote as the number of bits set ('1' bits) in the binary representation of the non-negative integer x.
You are given multiple queries consisting of pairs of integers l and r. For each query, find thex, such thatl ≤ x ≤ r, and is maximum possible. If there are multiple such numbers find the smallest of them.
The first line contains integer n — the number of queries (1 ≤ n ≤ 10000).
Each of the following n lines contain two integersli, ri — the arguments for the corresponding query (0 ≤ li ≤ ri ≤ 1018).
For each query print the answer in a separate line.
31 22 41 10
137
The binary representations of numbers from 1 to 10 are listed below:
110 = 12
210 = 102
310 = 112
410 = 1002
510 = 1012
610 = 1102
710 = 1112
810 = 10002
910 = 10012
1010 = 10102
结果要的是最多1的数,相同数量的1的数中,输出,最小值。我们知道,从低位不断向上添加,这样的话,就是最优的解。因为我们中间不会放置0。
所以我们只需要不断地在left的二进制数中,不断地从低位向高位添加1,一直到不能添加,这样得到的结果就是最优解。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) { ll left,right; scanf("%I64d %I64d",&left,&right); ll val=1; ll ans=left; while(left<right) { left = left | val;//不断地往高位添加1 if(left>right) break; ans = left; val = val<< 1; } printf("%I64d\n",ans); } return 0;}
- Bits
- Bits*
- UVA_446_Kibbles "n" Bits "n" Bits "n" Bits
- Persistent Bits
- Changing Bits
- leetcode_num190_Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- Reverse Bits
- TCP 相关大神博客
- Windows常见问题及解决
- TensorFlow 基础小记
- 自定义View----自定义轮播图
- DNA排序
- Bits*
- Nim的博弈详解(简单易懂)(一)
- 程序依赖DLL打包工具的制作
- UIScrollView
- Android应用的基本组成
- 《2017Android常用框架收录——Butterknife》
- Spark 自定义排序
- Android常用开源项目(四十五)
- GIT学习之路第四天 远程仓库