0


利用Python求:若一个五位数是abcde,此数乘以4之后得到edcba,求这个数

    首先想到的是利用for循环遍历10000-100000,得到这个数 i(abcde)的万位a,千位b,百位c,十位d,个位e,计算得到 r(edcba),使用if条件判断:i*4=r  输出 i

解法一:

# 解法1
for i in range(10000, 100000):
    a = i // 10000
    b = i // 1000 % 10
    c = i % 1000 // 100
    d = i % 100 // 10
    e = i % 10
    r = e * 10000 + d * 1000 + c * 100 + b * 10 + a
    if i * 4 == r:
        print(i)

换一个思路:利用字符串

    可以将这个五位数 i 转换成字符串;重新组合得到 r,利用for循环遍历加条件判断得到 i 

解法二:

# 解法2
for i in range(10000, 100000):
    s = str(i)
    r = s[-1] + s[-2] + s[2] + s[1] + s[0]
    if str(i * 4) == r:
        print(i)
有人说:你这还是不够简单。 ta让我用一行代码求出 i 。

我攥紧了沙包大的拳头,当ta掏出手机,打开微信支付的时候,我松开了

   **一行代码包括for循环和条件判断?

       这不是推导式(生成器)吗?

   **又发现这个 r 不就是 i 的倒序吗?

解法三:

# 解法3
l = [i for i in range(10000, 100000) if str(i * 4) == str(i)[::-1]]
print(*l)

一行代码=20块,还行

最后的结果:21978 (21978*4=87912)

(4也可以改成别的数)

标签: python 算法

本文转载自: https://blog.csdn.net/HuaFMX/article/details/120526655
版权归原作者 小紫莹 所有, 如有侵权,请联系我们删除。

“利用Python求:若一个五位数是abcde,此数乘以4之后得到edcba,求这个数”的评论:

还没有评论