版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yk_0311/article/details/82083501
参考书籍:《程序员的算法趣题》。书中是用Ruby实现的。这里是用python来实现。
# 求用十进制、二进制、八进制表示都是回 文数的所有数字中,大于十进制数 10 的最 小值
'''
分析;
二进制回文数,如果最低为是0,那么最高位也是0,显然不符合逻辑,所以最低位应该为1是一个奇数
'''
num = 11
while True:
# 十进制数
a = str(num) # 转换为字符串形式
b = a[::-1] # 逆序数
# 二进制数
c = str(bin(num))[2:] # bin()把整数转换为二进制数,并将字符串中的0b字符串去掉
d = c[::-1]
# 八进制数
e = str(oct(num))[2:] # oct->八进制数,并将字符串中的0o字符串去掉
f = e[::-1]
if a == b and c == d and e == f:
print("num is :{}".format(num))
break
num = num + 2 # 分析中可以确定是奇数所以加上2
主要的点:
1.分析出是一个奇数,没分析出来也可以
2.bin(),oct(),hex()。将整数转换为二进制,八进制,十六进制
3.还要将标识字符段去掉