幸运数字

问题描述

哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如126是十进制下的一个哈沙德数,因为(126)10 mod(1+2+6)0;126 也是进制下的哈沙德数,因为(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个幸运数字是多少?你只需要告诉小蓝这个整数的十进制表示即可。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的 结果为一个整数,在提交答案时只填写这个整数,填写多余的内 容将无法得分。

Mycode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def harshad_num(a,str):
num_sum=0
for i in str:
if i=="a":
num_sum +=10
elif i=="b":
num_sum += 11
elif i=="c":
num_sum += 12
elif i=="d":
num_sum += 13
elif i=="e":
num_sum += 14
elif i=="f":
num_sum += 15
else:
num_sum += int(i)
if num_sum==0:
return 0
elif a%num_sum==0:
return 1
else:
return 0
times=0
for i in range(10000000000000000):
bin_num=bin(i)[2:]
oct_num=oct(i)[2:]
hex_num=hex(i)[2:]
if harshad_num(i,bin_num)==1 and harshad_num(i,str(i)) and harshad_num(i,oct_num)==1 and harshad_num(i,hex_num)==1:
times+=1#注意十进制整除
if times==2023:
print(i)
break

幸运数字
https://ianwusb.blog/2024/04/08/幸运数字/
作者
Ianwusb
发布于
2024年4月8日
许可协议