本文最后更新于 2024-07-16T20:15:01+08:00
问题描述
哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如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
|