POJ-2453

2023-05-16

As we known, data stored in the computers is in binary form. The problem we discuss now is about the positive integers and its binary form.

Given a positive integer I, you task is to find out an integer J, which is the minimum integer greater than I, and the number of '1's in whose binary form is the same as that in the binary form of I.

For example, if "78" is given, we can write out its binary form, "1001110". This binary form has 4 '1's. The minimum integer, which is greater than "1001110" and also contains 4 '1's, is "1010011", i.e. "83", so you should output "83".

Input

One integer per line, which is I (1 <= I <= 1000000).

A line containing a number "0" terminates input, and this line need not be processed.

Output

One integer per line, which is J.

Sample Input


1
2
3
4
78
0
  

Sample Output


2
4
5
8
83  

整体思路:

        利用二进制加法原理实现,

        并运用贪心算法,一步一步进行。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[20]={0};
int b[20]={0};
int u,j,c;//u是用来记录某个数的二进制形式有多少位,j是用来记录需要加多少个1;c=u,保证每次加一都是从末尾加起
int w;//用来记录某二进制数有多少位1; 
void z2(int n){//将n转化为二进制形式 
	memset(a,0,sizeof(a));
	u=0;
	for(;;u++){
		a[u]=n%2;
		if(a[u]==1){
			w++;
		}
		n/=2;
		if(n==0){
			return;
		} 
	}
	
}
//void sum(){
//	int c=u;
//	for(;c>=0;c--){
//		if(a[c]==0){
//			if(c==u){
//				
//				break;
//			}
//			else if(c!=u){
//				
//				break;
//			} 
//			else if(c==0)
//			
//		}
//	}
//}
void sum1(int c){//递归末尾加一 模仿二进制加一 
	a[c]++;
	if(a[c]==2){
		a[c]=0;
		if(c!=0)
		sum1(c-1);
		else if(c==0){
			memset(b,0,sizeof(b));
			for(int i=0;i<u+1;i++){
				b[i]=a[i];
			}
			a[0]=1;
			a[1]=0;
			for(int i=2;i<u+2;i++){
				a[i]=b[i-1];
			}
			u++;
			c++;
		}
	}
}

int main(){
	for(;;){
		int n;
		cin>>n;
	//	for(n=1;n<101;n++){
		if(n==0){
			break;
		}
		w=0;
		z2(n);
		memset(b,0,sizeof(b));
		for(int i=0;i<u+1;i++){
			b[i]=a[i];
		} 
		for(int i=0;i<u+1;i++){
			a[i]=b[u-i];
		}
//			for(int i=0;i<u+1;i++){
//				cout<<a[i];
//			}
		j=0;
		c=u;
		for(;;){
			sum1(c);
			j++;
//			for(int i=0;i<u+1;i++){
//				cout<<a[i];
//			}
			//cout<<endl;
			int e=0;//用来记录每次加1之后有多少位1; 
			for(int i=0;i<u+1;i++){
				if(a[i]==1){
					e++;
				}
			}
			//if(e==w){
//			for(int i=0;i<u+1;i++){
//				cout<<a[i]<<endl;
//			}}
			if(e==w){
			//cout<<n<<" ";
			cout<<n+j<<endl;
			break;}
		}
		//if(n==100){
		//	break;
		//}
	}
//break;
//}
} 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

POJ-2453 的相关文章

  • POJ-2453

    As we known data stored in the computers is in binary form The problem we discuss now is about the positive integers and
  • Week5 作业D - 滑动窗口[POJ - 2823]

    题目大意 输入 输出 基本思路 这个题的数据规模较大 xff0c k和n最大可以达到1e6 xff0c 因此如果我们暴力判断所有区间 窗口内元素的范围 中的最大值和最小值一定会超时 复杂度 O n 2
  • POJ 滑动窗口(优先队列的应用)

    数据结构与算法A 第三章 栈与队列 练习题 滑动窗口 思路 对于最大最小值分别维护一个优先队列 xff08 保存元素下标 xff09 以最小值为例 每次遇到一个新元素 xff0c 从队尾插入 插入时删去队列中比该值大的元素 xff08 因为
  • POJ滑动窗口

    题目描述 现在有一堆数字共N个数字 xff08 N lt 61 10 6 xff09 xff0c 以及一个大小为k的窗口 现在这个从左边开始向右滑动 xff0c 每次滑动一个单位 xff0c 求出每次滑动后窗口中的最大值和最小值 例如 xf
  • POJ 3764--The xor-longest Path---DFS + Trie(最大异或值)

    POJ 3764 The xor longest Path Time Limit 2000MS Memory Limit 65536K Description In an edge weighted tree the xor length
  • POJ - 2823 滑动窗口

    题目 xff1a 给一个长度为 NN 的数组 xff0c 一个长为 KK 的滑动窗体从最左端移至最右端 xff0c 你只能看到窗口中的 KK 个数 xff0c 每次窗体向右移动一位 找出窗体在各个位置时的最大值和最小值 思路 xff1a 网
  • POJ 3259 Wormholes(负权环路)

    题意 xff1a 农夫约翰农场里发现了很多虫洞 xff0c 他是个超级冒险迷 xff0c 想利用虫洞回到过去 xff0c 看再回来的时候能不能看到没有离开之前的自己 xff0c 农场里有N块地 xff0c M条路连接着两块地 xff0c W
  • poj 1131进制转换

    POJ 1131 Octal Fractions 任意进制之间小数的转换 给定一个八进制的小数题目要求你把它转换为十进制小数 xff0c 转换后小数的位数是转换前八进制小数位数的3倍且不输出末尾无意义的零 即后置零 我采用的方法是乘10然后
  • poj 1068 parencondings

    题目描述 xff1a 定义 S 为一个合法的括号字符串 S 可以用以下两种方式编码 xff1a 1 用一个整数数组 P 来表示 xff0c 其中元素 p i 是 S 中每个 39 39 前的 39 39 的个数 xff1b 2 用一个整数数
  • poj 2513 colored sticks

    代码 include lt iostream gt include lt stdio h gt using namespace std define MAX 27 define S 500003 struct Node int id Nod
  • POJ 1635 Subway tree systems

    题目 xff1a Some major cities have subway systems in the form of a tree i e between any pair of stations there is one and o
  • 汉诺塔问题(Hanoi)-python递归实现

    描述 描述 一 汉诺塔问题 有三根杆子A B C A杆上有N个 N gt 1 穿孔圆盘 盘的尺寸由下到上依次变小 要求按下列规则将所有圆盘移至C杆 每次只能移动一个圆盘 大盘不能叠在小盘上面 提示 可将圆盘临时置于B杆 也可将从A杆移出的圆
  • poj 2096 Collecting Bugs

    Problem poj org problem id 2096 vjudge net contest 151678 problem Q Reference blog csdn net xingyeyongheng article detai
  • poj 1742 Coins

    Problem poj org problem id 1742 Reference www cppblog com flyinghearts archive 2010 09 01 125555 html blog csdn net wang
  • POJ--1328:Radar Installation (贪心)

    1 题目源地址 http poj org problem id 1328 2 解题思路 该题题意是为了求出能够覆盖所有岛屿的最小雷达数目 每个小岛对应x轴上的一个区间 在这个区间内的任何一个点放置雷达 则可以覆盖该小岛 区间范围的计算用 x
  • POJ 2479 Dual Core CPU|网络流|dinic模版

    问题描述 总时间限制 15000ms 单个测试点时间限制 5000ms 内存限制 65536kB 描述 As more and more computers are equipped with dual core CPU SetagLilb
  • POJ--1159:Palindrome (DP求最长公共子序列)

    1 题目源地址 http poj org problem id 1159 2 题目大意 题目就是给你一个字符串 问你添加最少几个字符之后字符串变成回文字符串 求给出的字符串和逆序的字符串的最长公共子序列 用总长度减去这个最长公共子序列的长度
  • poj 1195 Mobile phones

    Problem poj org problem id 1195 vjudge net contest 146952 problem C Meaning 有一个 S S 的正方形区域 两维的下标范围都是是 0 S 1 有 4 种操作 1 0
  • 【扩展KMP】POJ_3450| HDU_2328 Corporate Identity

    原题直通车 POJ 3450 Corporate Identity HDU 2328 Corporate Identity 题意概述 找出N个串中最长公共子串 分析 一 可以直接枚举其中一个串的所有字串 跟所有串进行匹配找到结果 二 用其中
  • poj1463

    1

随机推荐

  • Java中String类的常用方法

    文章目录 Java 中 String 类的常用方法一 String 类的概念二 常用的构造方法三 常用方法1 toString 2 length 3 getBytes 4 toCharArray 5 charAt int index 6 i
  • ASR项目实战-数据

    使用机器学习方法来训练模型 xff0c 使用训练得到的模型来预测语音数据 xff0c 进而得到识别的结果文本 xff0c 这是实现语音识别产品的一般思路 本文着重介绍通用语音识别产品对于数据的诉求 对数据的要求 训练集 相关要求 xff0c
  • 如何写一棵简单的二叉查找树

    二叉查找树 完整代码 xff1a https github com problemin Algorithm blob master src Tree BSTree java 二叉排序树 xff08 Binary Sort Tree xff0
  • Redis常见的数据类型命令

    文章目录 Redis 常见的数据类型及命令一 常见的NoSQL二 Redis 简介三 key 键的一些操作命令四 Redis的五种基本数据结构1 String xff08 字符串 xff09 介绍常用命令1 1 set get1 2 app
  • Redis 的主从复制机制

    文章目录 Redis 的主从复制机制主从复制概述主从复制的作用主从复制环境的搭建主从复制的原理 哨兵模式概述哨兵模式的作用哨兵模式环境的搭建哨兵模式的原理 Cluster 模式 Redis 的主从复制机制 主从复制 概述 主从复制 xff0
  • Nginx 详解

    文章目录 Nginx 详解一 简介二 四大应用场景1 HTTP 服务器2 反向代理3 负载均衡4 动静分离 三 Linux 环境下安装Nginx四 Nginx 服务常用命令五 Nginx 配置文件1 全局块1 1 user1 2 worke
  • RabbitMQ 详解

    文章目录 RabbitMQ 详解一 MQ 简介1 MQ优缺点2 MQ应用场景3 AMQP 和 JMS4 常见的 MQ 产品 二 RabbitMQ 工作原理三 Linux环境安装RabbitMQ1 安装 Erlang2 安装 RabbitMQ
  • AndroidStudio卸载删除干净

    文章目录 前言一 卸载AndroidStudio程序二 删除目录 android三 xff0c 删除AndroidStudio xff0c Sdk目录在这里插入图片描述 这样文件目录就删除干净了 xff0c 接下来的教程是将配置删除 xff
  • 视图绑定ActivityMainBinding

    使用视图绑定 xff0c 可以更轻松的写与视图交互的代码 在模块中启动视图绑定之后 xff0c 系统会为每个模块中的每个XML布局文件生成一个绑定类 绑定类的实例包含对在相应布局中具有ID的所有视图的直接引用 可以代替findViewByI
  • 【FTP服务搭建】使用windows虚拟机搭建ftp服务,并能够使用ftp进行传输文件的操作

    参考了两位大佬写的教程 xff0c 自己实践了一下 xff0c 整理了一下操作步骤 使用机器 xff1a win10虚拟机 win7虚拟机 实验准备 win10下载filezilla下载地址 win10虚拟机关闭防火墙 两台机器可以相互 p
  • 操作系统经典问题——消费者生产者问题

    今日在学习操作系统的过程中遇到了这个问题 xff0c 实在是很苦恼一时间对于这种问题以及老师上课根据这个问题衍生的问题实在是一头雾水 在网络上寻找了一些大佬的讲解之后算是暂时有了点茅塞顿开的感觉 首先第一点什么是生产者 消费者问题 xff1
  • jar包的运行结果和源代码运行结果不一样

    问题 xff1a 我的A模块依赖了B模块 xff0c B模块更新了代码之后 xff0c 把A模块打包成jar包 xff0c 但是运行的时候我的B模块还是我修改之前的样子 报错 原因 xff1a 是因为我的B模块在更新了之后没有把它放到mav
  • Tensorflow数据读取篇之一 ——字节与张量的区别

    前言 字节串 xff08 bytes xff09 类型和张量 xff08 tensor xff09 类型是两种不同的数据类型 xff0c 它们在数据类型 内存分配和计算方式等方面有所不同 一 区别 数据类型 xff1a 字节串是一种特殊的不
  • O3DE社区发布2305.0版本

    O3DE社区发布了23年的第一个版本 xff0c 版本号为2305 0 2305 0版本对应的代码标签 xff0c 见链接 2305 0版本发布说明 xff0c 见链接 直接下载标签2305 0对应的源码 xff0c 命令如下 xff1a
  • 【机器学习】周志华西瓜书第八章集成学习习题8.3--编程实现AdaBoost模型,以不剪枝决策树为基学习器,在西瓜数据集3.0a上训练一个AdaBoost集成,并与教材图8.4进行比较

    xff08 1 xff09 问题理解与分析 编程实现AdaBoost模型 xff0c 不剪枝决策树为基学习器 xff0c 在西瓜数据集3 0a上训练一个AdaBoost集成 xff0c 并与教材图8 4进行比较 xff08 2 xff09
  • 【机器学习】周志华西瓜书第七章贝叶斯分类器习题--实现AODE分类器,以西瓜数据集3.0为训练集,对“测1”进行判别。

    from numpy import import numpy as np import pandas as pd 读取文件格式为xlsx的数据 def dataLoad filename df 61 pd read excel fliena
  • linux ubuntu版本下桌面图标过小或过大调整

    最近用虚拟机弄了个ubuntu系统 xff0c 但是在全屏状态下系统的桌面图标很小 xff08 如下图 xff09 后来发现是虚拟机的分辨率设置过大 xff08 大分辨率一般对应比较大的屏幕 xff09 xff0c 所以导致图标过小 更改方
  • css选择器定位元素

    CSS选择器是CSS语言的基本组成部分 xff0c 用于选择HTML或XML文档中要应用样式的元素 以下是一些常用的CSS选择器及其用法介绍 xff1a 元素选择器 xff1a 选择所有指定元素类型的元素 例如 xff1a p选择所有的段落
  • Spring Framework 学习

    Spring Framework 学习 1 Spring 核心概念1 1 IOC IOC容器 Bean DI 2 入门案例2 1 IOC入门案例2 2 DI 入门案例 3 IOC 基本内容3 1 bean 基础配置3 2 bean 实例化
  • POJ-2453

    As we known data stored in the computers is in binary form The problem we discuss now is about the positive integers and