An Easy Problem(信息学奥赛一本通-1223)

【题目描述】

给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。

举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。

【输入】

输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。

【输出】

输出若干行对应的值。

【输入样例】

1

2

3

4

78

0

【输出样例】

2

4

5

8

83

【题解代码】

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int get(int x)
{
	int cnt = 0;
	while (x)
	{
		x &= x - 1;
		cnt++;
	}
	return cnt;
}

int main()
{
	int n;
	while (cin >> n && n != 0)
	{
		int num = get(n);
		for (int i = n + 1; i <= 1e6; i++)
		{
			if (get(i) == num)
			{
				cout << i << endl;
				break;
			}
		}
	}

    return 0;

}
相关推荐
Whisper_long5 小时前
【数据结构】深入理解堆:概念、应用与实现
数据结构
IAtlantiscsdn5 小时前
Redis7底层数据结构解析
前端·数据结构·bootstrap
我星期八休息5 小时前
深入理解跳表(Skip List):原理、实现与应用
开发语言·数据结构·人工智能·python·算法·list
lingran__5 小时前
速通ACM省铜第四天 赋源码(G-C-D, Unlucky!)
c++·算法
haogexiaole5 小时前
贪心算法python
算法·贪心算法
希望20175 小时前
图论基础知识
算法·图论
m0_713541845 小时前
systemverilog如何解决不能使用变量索引来进行位选择的范围指定
算法·systemverilog
七牛云行业应用6 小时前
深度解析强化学习(RL):原理、算法与金融应用
人工智能·算法·金融
和编程干到底6 小时前
数据结构 栈和队列、树
数据结构·算法
纪元A梦6 小时前
贪心算法在GNN邻域采样问题中的深度解析
算法·贪心算法