这个难题的答案是什么? [关闭]

问题描述 投票:-3回答:1

这个难题的答案是什么?

对于区间[300,800]中的所有整数,找到数字的罗马数字表示形式并将它们连接到一个逗号分隔的字符串中。挑战的解决方案是所得字符串的md5哈希码。哈希码是仅使用小写字符的十六进制字符串。

md5
1个回答
0
投票

这里是代码:

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)
© www.soinside.com 2019 - 2024. All rights reserved.