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;

}
相关推荐
带多刺的玫瑰9 小时前
Leecode#9刷题之回文数
数据结构·算法
泯泷9 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
泯泷9 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷9 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷9 小时前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷9 小时前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法
萌动的小火苗10 小时前
数据结构面试题【无答案】
c语言·开发语言·数据结构·链表
Asize10 小时前
54. 螺旋矩阵
算法
Asize10 小时前
73. 矩阵置零
算法
微露清风11 小时前
快慢指针算法学习记录
学习·算法·快慢指针