【算法趣题】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 回文十进制数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

The Definitive Guide to HTML5 WebSocket

The Definitive Guide to HTML5 WebSocket

Vanessa Wang、Frank Salim、Peter Moskovits / Apress / 2013-3 / USD 26.30

The browser is, hands down, the most popular and ubiquitous deployment platform available to us today: virtually every computer, smartphone, tablet, and just about every other form factor imaginable c......一起来看看 《The Definitive Guide to HTML5 WebSocket》 这本书的介绍吧!

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

RGB HEX 互转工具

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

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器