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;

}
相关推荐
士别三日&&当刮目相看7 分钟前
数据结构*二叉树
数据结构
喝养乐多长不高16 分钟前
数据结构--红黑树
java·数据结构·算法·红黑树·二叉搜索树·avl树
xindafu28 分钟前
代码随想录算法训练营第三十七天-2|动态规划part2
算法·动态规划
阿沁QWQ1 小时前
list的设计
数据结构·list
এ᭄画画的北北1 小时前
力扣-142.环形链表II
算法·leetcode
朝九晚五ฺ1 小时前
【算法学习】递归、搜索与回溯算法(二)
数据结构·学习·算法·深度优先
短尾黑猫1 小时前
【LeetCode 42】接雨水(单调栈、DP、双指针)
算法·leetcode
月亮被咬碎成星星2 小时前
LeetCode[226] 翻转二叉树
算法·leetcode
KingQian20182 小时前
单片机嵌入式滤波算法库
单片机·嵌入式硬件·算法
minji...2 小时前
C语言 指针(9)
c语言·开发语言·数据结构