Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86529
  • 博文数量: 47
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 12:11
文章分类

全部博文(47)

文章存档

2008年(47)

我的朋友

分类:

2008-11-21 17:53:57

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) |
给主人留下些什么吧!~~