说明
给定l和r,请你找到一个x,使l≤x≤r,并且二进制形式包含的1最多。 如果有多个这样的数字,则输出其中的最小数字。
输入格式
输入两个正整数l和r(1<=l<=r<=10^5)
输出格式
按要求输出x
输入数据 1
1 10
Copy
输出数据 1
7
Copy
提示
在1到10之间,只有7的二进制形式包含3个1
______________________________________________________________________
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int best,max=0;
for(int i=a;i<=b;i++)
{
int num=1,c=i;
while(c>=1)
{
if(c%2==1)
{
num+=1;
}
c/=2;
}
if(num>max)
{
max=num;
best=i;
}
}
cout<<best;
}
给定两个正整数l和r,程序通过遍历区间[l,r],计算每个数字的二进制表示中1的个数,找出1数量最多且数值最小的数字。示例中,区间[1,10]内的数字7有三个1,是最优解。
1486

被折叠的 条评论
为什么被折叠?



