原题是这样的:
一个六位数,分别用2,3,4,5,6乘它,得到的五个新数仍是由原数中的六个数字组成,只是位置不同,则此六位数是多少?
我把这题给做出来了!
def pcb(i):
if a(i)==a(i*2):
return pcb_3(i)
def pcb_3(i):
if a(i)==a(i*3):
return pcb_4(i)
def pcb_4(i):
if a(i)==a(i*4):
return pcb_5(i)
def pcb_5(i):
if a(i)==a(i*5):
return pcb_6(i)
def pcb_6(i):
if a(i)==a(i*6):
return i
def a(i):
c=b(i)
c.sort()
return c
def b(i):
return list(str(i))
# 这个原来我写的是错的,后来师父改滴——其实改滴也不好!
for i in range(100000,1000000):
if i and pcb(i):
print i
break
师父在学校那台破电脑上输代码滴时候抱怨说我的程序可以用程序写唠。这有什么关系,反正我的代码的速度超过师父的啦!
def list_equ (ls):
for cond in map(lambda x: ls[0] == x, ls):
if not cond:
return False
return True
def sort (ls):
ls.sort()
return ls
def test_num (num):
return list_equ(map(lambda x: reduce( \
lambda i,j: i+j, sort(list(str(x * num)))), range(2,7)))
def give_rst ():
return filter(test_num, range(100000,1000000))
for i in range(100000,100000):
if (test_num(i)):
print i
但是,最后师父使出了杀手锏,把这题用数学方法解出来唠,他个DB。。。
以后一定要超过他!
No comments:
Post a Comment