最大的位或

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 655    Accepted Submission(s): 293

Problem Description

B君和G君聊天的时候想到了如下的问题。
给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大。
其中|表示按位或,即C、 C++、 Java中的|运算。

Input

包含至多10001组测试数据。
第一行有一个正整数,表示数据的组数。
接下来每一行表示一组数据,包含两个整数l,r。
保证 0 <= l <= r <= 1018。

Output

对于每组数据输出一行,表示最大的位或。

Sample Input

5
1 10
0 1
1023 1024
233 322
1000000000000000000 1000000000000000000

Sample Output

15
1
2047
511
1000000000000000000
 
 
 
//第一次做位运算有关的题目,贪心方案想了好久。。。
 #include <stdio.h>
#include <string.h> typedef long long LL; LL l,r,Max;
char bit_l[];
char bit_r[];
char temp[]; LL StrToNum(char s[])//二进制字符变数字
{
int len=strlen(s);
LL ans=,res=;
for (int i=len-;i>=;i--)
{
if (s[i]=='')
ans+=res;
res*=;
}
return ans;
} void NumToStr(LL x)//数字变二进制字符串
{
if (x==)
{
temp[]='';
temp[]='\0';
return ;
}
char s[];
int pos=;
while (x!=)
{
int tt=x%;
if (tt==)
s[pos++]='';
else if (tt==)
s[pos++]='';
x/=;
}
s[pos]='\0';
int i;
for (i=;i<pos;i++)
temp[i]=s[pos--i];
temp[i]='\0';
} int main()
{
int i,j,t;
char test[];
scanf("%d",&t);
while (t--)
{
Max=-;
scanf("%I64d%I64d",&l,&r);
if (l==r)
{
printf("%lld\n",l|r);
continue;
}
NumToStr(l);
strcpy(bit_l,temp);
NumToStr(r);
strcpy(bit_r,temp); strcpy(test,bit_r);
int len_l=strlen(bit_l);
int len_r=strlen(bit_r);
for (i=;i<len_r-len_l;i++)
{
test[i]='';
}
for (j=;j<=len_l;j++)
{
test[i++]=bit_l[j];
}
strcpy(bit_l,test);
for (i=;i<len_r;i++)
{
if (bit_l[i]==''||bit_r[i]=='')
test[i]='';
else
test[i]='';
}
test[i]='\0';
LL res;
res=StrToNum(test);
if (res>Max) Max=res;
//printf("l : %s\n",bit_l);
//printf("r : %s\n",bit_r);
//printf("t : %s\n",test);
int k=;
while (bit_l[k]==bit_r[k]) k++;
k++;
for (i=k;i<len_r;i++)
{
res=StrToNum(test);
if (res>Max) Max=res;
if (bit_l[i]==''&&bit_r[i]=='')
{
test[i]='';
res=StrToNum(test);
if (res>Max)
Max=res;
}
}
printf("%I64d\n",Max);
}
return ;
}

最新文章

  1. [LeetCode] Encode and Decode Strings 加码解码字符串
  2. python 类属性与方法
  3. 如何使用ITEXTSHARP将HTML代码字符串写进PDF
  4. [Tool] 使用Visual Studio Code开发TypeScript
  5. iOS项目开发知识点
  6. java NIO-我们到底能走多远系列(39)
  7. 根据域名获取IP地址,并探测是否可达
  8. Poj 1904 King&#39;s Quest 强连通分量
  9. Runtime运行时学习(一)
  10. java 对象赋值问题
  11. angular初始用——简易购物车
  12. javascript 实现加法分离。 plus(3)(4); // =&gt; 得到 7
  13. jQuery(20161108)
  14. jquery 只读
  15. 【算法与数据结构专场】BitMap算法基本操作代码实现
  16. html_基础标签
  17. 操作CSS样式公共方法库
  18. linux iptables详解(转)
  19. algernon 基于golang 的独立的支持redis lua pg。。。 的web server
  20. ZCU板级调试Bug记录

热门文章

  1. ElasticSearch 结构化搜索全文
  2. ElasticSearch 分布式集群
  3. How does a single thread handle asynchronous code in JavaScript?
  4. 2017.4.10 spring-ldap官方文档学习
  5. Error:[$parse:lexerr]
  6. 【HTML 元素】嵌入另一张HTML文档、通过插件嵌入内容、嵌入数字表现形式
  7. git学习——查看提交历史
  8. java学习笔记——可用链表
  9. 改进xutils下载管理器,使其,在随意地方进行进度更新,以及其它状态监听操作
  10. DBCC MEMORYSTATUS