幸运数字。

哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如126是十进制下的一个哈沙德数,因为(126)10 mod(1+2+6)=0;12 也是八进制下的哈沙德数,因为(126)10 =(176)8,(126)10 mod(1+7+6)=0;同时126也是16 进制下的哈沙德数,因为(126)10 =(7e)16,(126)10 mod (7 +e) = 0。小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为哈沙德数,那么这个数字就是幸运数字,第1至第10个幸运数字的十进制表示为:1,2,4,6,8,40,48,72,120,126...现在他想知道第2023个幸运数字是多少?你只需要告诉小蓝这个整数的十进制表示即可。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分

import os
import sys

# 请在此输入您的代码

dic=dict({
    "a":10,
    "b":11,
    "c":12,
    "d":13,
    "e":14,
    "f":15
}
)

def mysum(string):
  sum1=0
  for s in string:
    if s in dic:
      sum1+=dic[s]
    else:
      sum1+=int(s)
  return sum1

num=1
cnt=0

while cnt<2023:
  if num%mysum(bin(num)[2:]) == 0 and num%mysum(oct(num)[2:]) == 0 and num%mysum(hex(num)[2:]) == 0 and \
                      num%mysum(str(num)) == 0:
    cnt+=1
  num+=1

print(num-1)

注意:

利用python中函数转变进制时带前缀需要去除[2:]

0b1010

十进制转变二进制bin()

十进制转变八进制oct()

十进制转变十六进制hex()

你可能感兴趣的:(python算法,算法,数据结构,python)