算法趣题Q1:回文十进制数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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.还要将标识字符段去掉

猜你喜欢

转载自blog.csdn.net/Yk_0311/article/details/82083501
Q1