赞
踩
小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n(1<=n<=1e9),小扇需要找到一个比n大的数字m,使得m和n对应的二进制中1的个数要相同(如4对应二进制1008对应二进制10001的个数都为1), 现在求m的最小值
输入描述
输入:第一行输入一个正整数n(1<=n<=1e9)。
输出描述
输出:输出一个下整数m。
示例1
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
复制
2
输出
复制
4
说明
2的二进制10.4的二进制位100,1的个数相同,且4是满足条件的最小数
示例2
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
复制
7
输出
复制
11
说明
7的二进制111,11的二进制位1011,1的个数相同,且11是满足条件的最小数
- #include <stdio.h>
- // 这题就是暴力破解就好了
- // 枚举数字中的bit1的出现次数,进行比对即可
- // 定义一个函数统计bit1中出现的1的个数
- int oneCnt(int val){
- int res = 0;
- while(val){
- res += val % 2;
- val >>= 1;
- }
- return res;
- }
-
- int main(){
- int n = 0;
- int m = (int)1e9;
- scanf("%d", &n);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。