首页 > 其他 > 详细

5146: 最强单身狗

时间:2019-05-19 22:27:48      阅读:118      评论:0      收藏:0      [点我收藏+]

描述

有若干只单身狗排成一排,编号从 l 到 r。GBX 发现,一个单身狗的编号的二进制中 1 的数量越多,表示该单身狗越强(就是单身越久咯 -_-|||)。GBX 想找到一只最强的单身狗和他做朋友(强者惺惺相惜吧 >_<)。

 

输入

输入一个 T(T ≤ 1000)表示 T 组数据。

对于每组数据输入两个正整数 l,r(1 ≤ l ≤ r ≤ 1018 ),表示单身狗的标号。

 

输出

对于每组数据输出一个数表示最强的单身狗的标号(如果有多个输出最小的那个),每组数据占一行。

 

样例输入

样例输出

题目来源

华中师范大学 2016 年“计蒜客杯”第十四届程序设计竞赛

 

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int t,jishu;
 5 ll a,b;
 6 int arr[65];
 7 int main()
 8 {
 9     cin>>t;
10     while(t--){
11         memset(arr,0,sizeof(arr));
12         jishu=0;
13         cin>>a>>b;
14         ll sum=a;
15         while(a){
16             arr[++jishu]=a&1;
17             a=a>>1;
18         }      //从低位开始改 如果的小的可以加那肯定加小的可以为后面提供更加大的空间 贪心
19         for(int i=1;i<=61;i++){  //从低位开始加上这个数
20             if(arr[i]==0&&sum+(1LL<<(i-1))<=b){   //1LL 转化为longlong防止溢出 从0开始
21                 sum+=(1LL<<(i-1));
22                 arr[i]=1;
23             }
24         }
25         cout << sum << endl;
26     }
27     return 0;
28 }
View Code

 

 

 

5146: 最强单身狗

原文:https://www.cnblogs.com/qq-1585047819/p/10891055.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!