如何快速实现趣味算法,找出不重复数的独特方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1326个文字,预计阅读时间需要6分钟。
原创新题请参考以下内容:
题目:假设一个数字在十进制表示时,不存在连续两位数字相同的情况,则称该数字为不重复数。例如,105、164和198都是不重复数。请编写一个程序,从1到10000中找出所有的不重复数,并输出它们。
原题目请参考: www.cnblogs.com/lovexyz123/archive/2009/09/04/1560166.html
如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如,105、164和198都是“不重复数”,而11、100和122不是。
下面用一个long类型( long类型数字A),实现返回大于A的最小“不重复数”。
解题思路没有详细的统计过大家的解法(很多都在回复内贴的代码)。但感觉大家的问题主要集中在计算大数的效率上。提供一种“经验”算法供大家参考。
题目按照我的理解,大致为输入99,返回101。输入199,返回201这类的。
按照人类的(其实就是我的。。哈哈)解题方式,算法分析如下:
1. 9为特殊字符
如果这串数字的某一位和其上一位均为9,则需要返回类似“101”这样的数值。
2. 首位和次位(左起第二位)均为9为特殊情况
在这种情况下,需进位(增加数字一位)。
3. 解决连续两位重复的方式为将低位数字+1(9已经当作特殊情况处理,这种情况下不可能为9)。
本文共计1326个文字,预计阅读时间需要6分钟。
原创新题请参考以下内容:
题目:假设一个数字在十进制表示时,不存在连续两位数字相同的情况,则称该数字为不重复数。例如,105、164和198都是不重复数。请编写一个程序,从1到10000中找出所有的不重复数,并输出它们。
原题目请参考: www.cnblogs.com/lovexyz123/archive/2009/09/04/1560166.html
如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如,105、164和198都是“不重复数”,而11、100和122不是。
下面用一个long类型( long类型数字A),实现返回大于A的最小“不重复数”。
解题思路没有详细的统计过大家的解法(很多都在回复内贴的代码)。但感觉大家的问题主要集中在计算大数的效率上。提供一种“经验”算法供大家参考。
题目按照我的理解,大致为输入99,返回101。输入199,返回201这类的。
按照人类的(其实就是我的。。哈哈)解题方式,算法分析如下:
1. 9为特殊字符
如果这串数字的某一位和其上一位均为9,则需要返回类似“101”这样的数值。
2. 首位和次位(左起第二位)均为9为特殊情况
在这种情况下,需进位(增加数字一位)。
3. 解决连续两位重复的方式为将低位数字+1(9已经当作特殊情况处理,这种情况下不可能为9)。

