标题:第几个幸运数
到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49
小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。
需要提交的是一个整数,请不要填写任何多余内容。
答案:1905
其实就是质因子分解,看有几个3,5,7
MAX = 59084709587505
total = 0
i,j,k = 0,0,0
for i in range(30): # 3的30次方早就超过MAX了
for j in range(30):
for k in range(30):
if 3**i * 5**j * 7**k <= MAX:
total += 1
else:
break
print(total-1) # 多了一个3^0*5^0*7*0=1的情况
方法二
MAX=59084709587505
a=[3,5,7]
b=[]
tou = 1
k=0
while True:
for i in range(3):
tt = tou * a[i]
if tt <= MAX:
b.append(tt)
b=list(set(b)) #去重
b.sort()#排序
tou = b[k]
if tou >=MAX:
break
k+=1
print(len(b))