给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。 举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。 【输入】 输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。 【输出】 输出若干行对应的值。
时间: 2024-04-02 09:31:20 浏览: 355
定点整数-计算机的运算方法
好的,我知道了你的要求,下面是解答:
这道题可以从二进制的角度去思考,我们可以先统计出N二进制中1的个数,再从N+1开始,依次判断二进制中1的个数是否与N相等,直到找到第一个满足条件的数为止。
具体实现可以使用Python的bin函数将整数转化为二进制字符串,并使用count函数统计1的个数,代码如下:
阅读全文