Problem 52
12 September 2003
It can be seen that the number, 125874, and its double, 251748, contain exactly the same digits, but in a different order.
Find the smallest positive integer, x, such that 2x, 3x, 4x, 5x, and 6x, contain the same digits.
1.x的第一位只能为1, 否则6x必然比x多一位
2.x的第二位不能大于6,否则6x必然比x多一位
3.x至少有6位
def fun52():
i = 10**5
l = 5
while 1:
if int(str(i)[0:2]) > 17:
l += 1
i = 10**l
continue
t1 = map(int, str(i))
t1.sort()
t2 = i*2
t2 = map(int, str(t2))
t2.sort()
if t1 != t2:
i += 1
continue
t3 = i*3
t3 = map(int, str(t3))
t3.sort()
if t1 != t3:
i += 1
continue
t4 = i*4
t4 = map(int, str(t4))
t4.sort()
if t1 != t4:
i += 1
continue
t5 = i*5
t5 = map(int, str(t5))
t5.sort()
if t1 != t5:
i += 1
continue
t6 = i*6
t6 = map(int, str(t6))
t6.sort()
if t1 != t6:
i += 1
continue
return i, i*2, i*3, i*4, i*5, i*6
answer is 142857, (142857 285714, 428571, 571428, 714285, 857142)
time:0.858999967575
从这以后的python代码都使用pysco进行了优化,速度相应会快一些
阅读(371) | 评论(0) | 转发(0) |