【算法趣题】Q01 回文十进制数

栏目: Python · 发布时间: 6年前

内容简介:【算法趣题】Q01 回文十进制数

回文数      

如果把某个数的各个数字按相反的顺序排列,得到的数和原来的数相同,则这个数就是“回文数”。例如 123454321 就是一个回文数。

问题

求用十进制、二进制、八进制表示都是回文数的所有数字,大于十进制数10的最小值。

例) 9(十进制数) = 1001(二进制数) = 11(八进制数)

例中的十进制数9小于10,因此不符合要求。

思路

因为二进制也是一个回文数,则二进制数的最高位和最低位相等,如果是0,明显不对,则只能1.二进制的最低位是1,对应的十进制一定是奇数。

举个例子,给定十进制数13,求对应的二进制的过程如下:

13/2=6 余 1 (余数对应二进制的最低位)

6/2=3 余 0

3/2=1 余 1

1/2=0 余 1

从下往上排列余数后就可以得到二进制数1101。(最低位是1,则第一个除法的余数是1,即十进制数/2的 余数是1,则该十进制数定是奇数)

因此,可以从11 开始,按顺序搜索,找到符合条件的数。

JavaScript实现

书中有个用JavaScript版本实现,我嵌套在html代码里,代码如下:

/* 为字符串类型添加返回逆序字符串的方法 */



  String.prototype.reverse = function(){



	return this.split("").reverse().join("");



}



/* 从11开始搜索 */



var num = 11;



while(true){



	if((num.toString() ==num.toString().reverse()) &&



		(num.toString(2) ==num.toString(2).reverse(2)) &&



		(num.toString(8) ==num.toString(8).reverse(8))){



		document.write("<p>十进制数:",num,"</p>");



		document.write("<p>二进制数:",num.toString(2),"</p>");



		document.write("<p>八进制数:",num.toString(8),"</p>");



		break;



	}



	/* 只搜索奇数,每次加2 */



	num += 2;



}

【算法趣题】Q01 回文十进制数

python3实现

python3中十进制数转化为二进制数和八进制数的函数分别为bin()和oct().

ten = 15

two = bin(ten)

eight = oct(ten)

print(str(ten))

print(str(two))

print(str(eight))
15

0b1111

0o17

python中对字符串s的逆序可用 s[::-1]表示:

a = 12345

s = str(a)

s[::-1]
'54321'

由于 Python 3中的二进制数以0b开头,八进制数以0o(python2中是以0开头的,注意区分)开头,所以转换成字符串后要剔除前缀,剩下数字再来做是否回文的判断。

判断十进制数,对应是二进制数和八进制数是否都是回文,写了个函数:

def isAllHuiwen(a):

    ten = str(a)

    two = str(bin(a))[2:]

    eight = str(oct(a))[2:]

    if ten == ten[::-1] and two == two[::-1] and eight == eight[::-1]:

        print("十进制数:"+ten)

        print("二进制数:"+two)

        print("八进制数:"+eight)

        return True

    else:

        return False

因此该问题比较好解决了:

num = 11

while True:

    if(isAllHuiwen(num)):

        break

    else:

        num = num + 2

结果为:

十进制数:585

二进制数:1001001001

八进制数:1111
【算法趣题】Q01 回文十进制数 【算法趣题】Q01 回文十进制数 【算法趣题】Q01 回文十进制数

本文由简单的happy 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上所述就是小编给大家介绍的《【算法趣题】Q01 回文十进制数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

矩阵论

矩阵论

方保镕 / 清华大学出版社 / 2004-1 / 39.00元

本书比较全面、系统地介绍了矩阵的基本理论、方法及其应用。全书分上、下两篇,共10章,分别介绍了线性空间与线性算子,内积空间与等积变换,λ矩陈与若尔当标准形,赋范线性空间与矩阵范数,矩阵的微积分运算及其应用,广义逆矩阵及其应用,矩阵的分解,矩阵的克罗内克积、阿达马积与反积,几类特殊矩阵(如:非负矩阵与正矩阵、循环矩阵与素矩阵、随机矩阵和双随机矩阵、单调矩阵、M矩阵与H矩阵、T矩阵与汉大象尔矩阵等),......一起来看看 《矩阵论》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换