HDU—5969最大位或
来源:互联网 发布:r语言编辑器 知乎 编辑:程序博客网 时间:2024/06/15 01:37
最大的位或
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1829 Accepted Submission(s): 689
Problem Description
B君和G君聊天的时候想到了如下的问题。
给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大。
其中|表示按位或,即C、 C++、 Java中的|运算。
给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大。
其中|表示按位或,即C、 C++、 Java中的|运算。
Input
包含至多10001组测试数据。
第一行有一个正整数,表示数据的组数。
接下来每一行表示一组数据,包含两个整数l,r。
保证 0 <= l <= r <=1018 。
第一行有一个正整数,表示数据的组数。
接下来每一行表示一组数据,包含两个整数l,r。
保证 0 <= l <= r <=
Output
对于每组数据输出一行,表示最大的位或。
Sample Input
51 100 11023 1024233 3221000000000000000000 1000000000000000000
Sample Output
15120475111000000000000000000
转化二进制 从后往前(从前往后也可以)遍历小数的每一位,碰到0就变成1,找到不大于大数 的最大数 然后异或。
代码写的啰嗦了些。。。。
#include<stdio.h>#define N 100long long p[N];long long s1[N],s2[N];long long a,b,l1,l2;void init(){ p[0]=1; int i; for(i=1;i<=70;i++) { p[i]=p[i-1]*2; }}bool judge(){ int i; long long num=0; for(i=0;i<l1;i++) { if(s1[i]==1) num+=p[i]; } if(num>b) return true; else return false;}int main(){ int n; init(); scanf("%d",&n); while(n--) { long long k,t,i; scanf("%lld %lld",&a,&b); k=0; t=a; while(1) { if(t/2==0) { s1[k++]=t; l1=k; break; } long long c=t%2; s1[k++]=c; t=t/2; } k=0; t=b; while(1) { if(t/2==0) { s2[k++]=t; l2=k; break; } long long c=t%2; s2[k++]=c; t=t/2; } for(i=0;i<l2;i++) { if(s1[i]==0&&s2[i]==0) { s1[i]=1; if(judge()) { s1[i]=0; break; } } } for(i=0;i<l2;i++) { if(s1[i]==1) s2[i]=1; } long long ans=0; for(i=0;i<l2;i++) { if(s2[i]==1||s1[i]==1) ans+=p[i]; } printf("%lld\n",ans); }}
阅读全文
0 0
- HDU—5969最大位或
- hdu 5969 最大的位或【贪心】
- HDU 5969 最大的位或
- HDU 5969 最大的位或
- hdu 5969 最大的位或
- hdu 5969 最大的位或 贪心
- HDU 5969最大的位或
- hdu 5969 最大的位或
- HDU 5969 最大的位或
- HDU 5969 最大的位或
- HDU 5969 最大的位或
- HDU 5969 最大的位或
- 【HDU 5969 最大的位或】 + 异或
- HDU最大的位或
- 最大的位或 HDU
- 最大的位或 HDU
- 2016 ccpc HDU 5969 最大的位或
- hdu 5969 最大的位或 ccpc 2016 合肥站
- HDU5861(线段树好题)
- Windows教程
- java学习笔记
- INTRODUCTION TO WRITING ARM SHELLCODE
- Android笔记(22)Wheelview选择器
- HDU—5969最大位或
- 调用线程对象的start()方法会执行run(),为什么不能直接调用run()方法??
- 面试疑难问题
- 结构体的重构
- android color 透明度列表
- 统计难题
- 菱形继承
- Springboot模板引擎之Freemarker篇
- boostrap table插件的分页与checkbox