给出任意一个正整数,算出大于它的最小不重复数——最高效[2014百度笔试题]

程序很简单,一看就懂,我就不多介绍了,直接上代码。

/**
 * 给出任意一个正整数,算出大于它的最小不重复数(即不存在相邻两个数相同的情况)
 */
#include<iostream>

using namespace std;

long minNoDoubleNumber(long x) {
	if(x < 10) {
		return x;
	}

	long y = 1;
	long temp = x;
	while(temp / 10 > 0) {
		y *= 10;
		temp /= 10;
	}
	y /= 10;

	int next = -1;
	bool hasPlus = false;
	while(y > 0) {
		next = (x / 10 / y) % 10;
		if((x / y) % 10 == next) {
			if(!hasPlus) {
				x += y;
				hasPlus = true;
				if(9 == next) {
					return minNoDoubleNumber(x);
				}
			} else {
				x -= y;
				if(0 == next) {
					return minNoDoubleNumber(x);
				}
			}
		} else {
			y /= 10;
		}
	}
	return x;
}

int main(void) {
	long x;
	cout<<"x=";
	cin>>x;
	cout<<"result="<<minNoDoubleNumber(x)<<endl;
}

程序文件见:https://github.com/wenin819/wenin819/blob/master/src/number/min_no_double_number.cpp

时间: 2024-12-22 10:10:49

给出任意一个正整数,算出大于它的最小不重复数——最高效[2014百度笔试题]的相关文章

java线程池当其中一个线程算出结果,终止全部线程

问题描述 java线程池当其中一个线程算出结果,终止全部线程 业务逻辑: 一个大型社区,每一秒有上千人在提交留言,提交的留言将经过,上万条的正则表达式的过滤,没有匹配任何规则的,才保存到系统,否则提示用户,您录入的内容不合法. 我是这样想的,把这上万条正则表达式,拆分成2000条一组,开一个5个线程的线程池,每个线程将负责其中2000个规则的匹配. 每条留言提交时,将由这5个线程,去判断是否有匹配的规则,如果其中一个线程匹配到了规则,将结束其他4个线程的任务,返回给用户结果. 请问这种要怎么实现

把“可疑”客户计算出“收入成本比” 算出客户的价值

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 当你把每个"可疑"客户都计算出一个"收入成本比",就很容易看出谁能带来的利润最差了. 文 | Joe Worth 如何鉴别哪些客户一直在浪费我的时间和精力却让我无法得到令人满意的回报,是我应该果断说再见的? 许多老板都知道自己企业的一大堆客户里,有相当一部分并不能带来利润.虽然我们一天到晚都在听&quo

有道难题2009复赛题解答(Java版):求大于给定数的最小不重复数

本文为原创,如需转载,请注明作者和出处,谢谢! 最近看了有道出的几个复赛题,觉得很好玩,现给出Java版的答案.先看看提干部分     如果一个数字十进制表达时,不存在连续两位数字相等,则称之为"不重复数".例如,105,1234和12121都是"不重复数",而11,100和 1225不算.给定一个long类型数字A,返回大于A的最小"不重复数". 下面是几个测试用例,我又加了几个 Examples: 0)    54     returns:

算法题-把一个正整数分解为几个不同的正整数之和,打印出所有组合。

问题描述 把一个正整数分解为几个不同的正整数之和,打印出所有组合. 笔试遇到的一个题,不会做.从网上搜,只搜到求积最大的一个组合.有会的帮忙解决下,多谢,最好说下算法思路,能有c源码最好

link中如何根据一个随机数,算出下一次产生的是什么随机数?用种子可以得到么?

问题描述 link中如何根据一个随机数,算出下一次产生的是什么随机数?用种子可以得到么? link中如何根据一个随机数,算出下一次产生的是什么随机数?用种子可以得到么? 解决方案 可以,只要使用确定的随机数算法,就可以得到.

写一个java程序访问url,并根据stream算出响应时间

问题描述 写一个java程序访问url,并根据stream算出响应时间,java.net.URL; 解决方案 用httpclient模拟访问,要不我给你传个例子吧.解决方案二:import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;public class Test{public static void main(String[] a

已知对角线的两点 判读给出的任意一个点 在不在矩形范围内

问题描述 已知对角线的两点判读给出的任意一个点在不在矩形范围内.这个方法用java具体应该怎么写?求帮助! 解决方案 解决方案二:介是作业吗?解决方案三:项目中需要用到这个方法,可是我不会写啊!解决方案四:光对角线就可以确定矩形了么?难道举行是平的?解决方案五:判断点的坐标就可以了.一条线.2端点坐标有了,其实就是判断新的点的xy和这两端点比较解决方案六:版主真快,判断坐标的范围即可.解决方案七:四楼已经给出答案了,给了2个点的坐标,给出点的坐标x1<x<x2,y2<y<y1,就说

华为面试题:谁能算出这个概率?

问题描述 华为面试题:谁能算出这个概率? 华为面试题:公司年会,抽奖规则自定(抽奖顺序),20人进行抽奖,4人是老板,16人是员工,现有特等奖一名,一等奖三名,二等奖五名,剩余全部三等奖,其中特等奖为Iphone 6S,抽奖规则如下:如果员工抽中iphone 6S便归其所有,如果是老板抽中(任意一老板),将再拿出一台提供抽奖(奖池就是两台,如果又有老板抽中,以此内推),请问何种抽奖顺序能让老板最大概率抽中Iphone 6S 解决方案 问题既然没有指定是哪个老板的抽中概率最大,那就可以考虑为是使这

jsp中有两个输入框,第一个输入数据后,自动算出第二个框的数

问题描述 jsp中有两个输入框,第一个输入数据后,自动算出第二个框的数 比如,我要第一个框时数量,根据第一个输入框输入的数据,自动算出第二个框的数据,并显示出来.这个问题哪位大神给解决一下,感激不尽! 解决方案 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4