首先想到的是利用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也可以改成别的数)
本文转载自: https://blog.csdn.net/HuaFMX/article/details/120526655
版权归原作者 小紫莹 所有, 如有侵权,请联系我们删除。
版权归原作者 小紫莹 所有, 如有侵权,请联系我们删除。