题目
规定6,8为幸运数,其序列为 6,8,66,68,86,88,666,668.....给定整数n,求第n个数是多少
方法
幸运数是一种类似二进制的位数和数值的递增,将0视为6,1视为8,先求第n位为几位数,然后判断第n位为这几位数中的第几个,得到第几个后转换为二进制用零补齐前面的位数即可。
代码
n=int(input())
#bin() 十进制转换成二进制,bin(7)-->0b111,如果要使用要进行字符串切片
s=n
i=1
str_bin=''
str_ans=''
while s>2**i:
s-=2**i
i+=1
str_bin=bin(s-1)
st_bin=str_bin[2::]
str_bin='0'*(i-len(str_bin)+1)+str_bin
for char in str_bin:
if char=='0':
str_ans+='6'
elif char=='1':
str_ans+='8'
print(str_ans)