这个难题的答案是什么?
对于区间[300,800]中的所有整数,找到数字的罗马数字表示形式并将它们连接到一个逗号分隔的字符串中。挑战的解决方案是所得字符串的md5哈希码。哈希码是仅使用小写字符的十六进制字符串。
这里是代码:
import hashlib
def int_to_Roman(num):
val = [
1000, 900, 500, 400,
100, 90, 50, 40,
10, 9, 5, 4,
1
]
syb = [
"M", "CM", "D", "CD",
"C", "XC", "L", "XL",
"X", "IX", "V", "IV",
"I"
]
roman_num = ''
i = 0
while num > 0:
for _ in range(num // val[i]):
roman_num += syb[i]
num -= val[i]
i += 1
return roman_num
roman_str = []
for i in range(300,801):
roman_str.append(int_to_Roman(i))
full_str = ",".join(roman_str)
result = hashlib.md5(full_str.encode()).hexdigest()
print(result)