题目描述

  给定一个正整数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

题解

  容易想到,当$n$加上$lowbit(n)$时,$1$的数量一定会减少$cnt$,我们只需要从末位开始找$cnt$个$0$位,将其改为$1$,得到的就是$m$了。

#include <iostream>
#include <cstdio> #define lowbit(x) ((x) & -(x)) using namespace std; int n, m;
int cnt; int main()
{
int tmp;
while(scanf("%d", &n) && n)
{
m = n + lowbit(n);
tmp = n;
while(tmp) ++cnt, tmp -= lowbit(tmp);
tmp = m;
while(tmp) --cnt, tmp -= lowbit(tmp);
tmp = ;
while(cnt)
{
if((tmp & lowbit(m)) ^ ) --cnt, m += tmp;
tmp <<= ;
}
printf("%d\n", m);
}
return ;
}

参考程序

【题解】An Easy Problem的更多相关文章

  1. HDU 5475 An easy problem 线段树

    An easy problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  2. [POJ] 2453 An Easy Problem [位运算]

    An Easy Problem   Description As we known, data stored in the computers is in binary form. The probl ...

  3. [UVA] 11991 - Easy Problem from Rujia Liu? [STL应用]

    11991 - Easy Problem from Rujia Liu? Time limit: 1.000 seconds Problem E Easy Problem from Rujia Liu ...

  4. uva--11991 - Easy Problem from Rujia Liu?(sort+二分 map+vector vector)

    11991 - Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for e ...

  5. An Easy Problem?!(细节题,要把所有情况考虑到)

    http://poj.org/problem?id=2826 An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

  6. POJ 2826 An Easy Problem?![线段]

    An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12970   Accepted: 199 ...

  7. 湖南大学第十四届ACM程序设计新生杯 E.Easy Problem

    E.Easy Problem Description: Zghh likes number, but he doesn't like writing problem description. So h ...

  8. HDU 5475An easy problem 离线set/线段树

    An easy problem Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. UVA-11991 Easy Problem from Rujia Liu?

    Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...

  10. An easy problem

    An easy problem Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. nowcoder A hard problem /// 数位DP

    题目大意: 称一个数x的各个数位之和为f(x) 求区间L R之间 有多少个数x%f(x)==0 #include <bits/stdc++.h> using namespace std; ...

  2. 关于数位dp的一些思考

    大致看完了claris的数位dp的pdf,感觉题目很厚实啊QAQ. 然后回过头再总结一下(感觉也不算总结啊,就是日常吐槽....) 首先数位dp这个东西是有格式的....所以明天早上再找道题来把模板联 ...

  3. kubernetes容器集群管理部署node节点组件

    发送配置文件到各个节点 [root@master ~]# scp /opt/kubernetes/cfg/*kubeconfig root@192.168.238.128:/opt/kubernete ...

  4. 关于GeneXus封装方法Model的方法

     最近 刚从外地出差回来 工作任务不是很重 能够抽点时间记点东西 下午花了2个多钟头尝试了一下GeneXus的封装方法的功能,这里记一下便于自己以后查看.我们在许多项目中或多或少都会有着重复代码编写的 ...

  5. 简单递归____Fibonacci数列

    #include <stdio.h> int fun(int x) { ||x==) ; else return fun(x-1)+fun(x-2); } int main() { int ...

  6. eclipse里部署struts2

    Struts2是一个比较出色的基于MVC设计模式的框架,是由Struts1和WebWork发展而来的,性能也比较稳定,现在是Apache软件基金会的一个项目,下面就来配置Struts2进行初始化的开发 ...

  7. 3、selenium 问题汇总

    一.'chromedriver' executable needs to be in PAT: 解决方法  下载谷歌驱动文件:Chromedriver.exe 将Chromedriver.exe 拷贝 ...

  8. Python3.5-20190518-廖老师-自我笔记-面向对象

    面向对象编程,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把老师分为一类,把学生分为一类.具体到某一个学生就是  这类中的一个具体对象,对象的 ...

  9. Electron-vue实战(二)— 请求Mock数据渲染页面

    Electron-vue实战(二)— 请求Mock数据渲染页面 作者:狐狸家的鱼 本文链接 GitHub:sueRimn 一.环境搭建 1.安装Mock.js 如果仅仅用作脱离后台的模拟数据,就安装在 ...

  10. Ververica Platform-阿里巴巴全新Flink企业版揭秘

    摘要:2019云栖大会大数据 & AI专场,阿里巴巴资深技术专家王峰带来“Ververica Platform-阿里巴巴全新Flink企业版揭秘”的演讲.本文主要从Ververica由来开始谈 ...