結果
問題 | No.518 ローマ数字の和 |
ユーザー |
|
提出日時 | 2017-05-28 22:32:13 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 34 ms / 2,000 ms |
コード長 | 1,866 bytes |
コンパイル時間 | 275 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 10,752 KB |
最終ジャッジ日時 | 2024-09-21 15:38:43 |
合計ジャッジ時間 | 1,748 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
def roman2arabic(roman: str) -> int:special_case = { "IV" : 4, "IX" : 9, "XL" : 40, "XC" : 90, "CD" : 400, "CM" : 900 }normal_case = { "I" : 1, "V" : 5, "X" : 10, "L" : 50, "C" : 100, "D" : 500, "M" : 1000 }arabic = 0for s in special_case.keys():if s in roman:arabic += special_case[s]roman = roman.replace(s, "")for n in normal_case.keys():if n in roman:arabic += roman.count(n) * normal_case[n]return arabicdef arabic2roman(arabic: int) -> str:roman = ""while arabic > 0:if arabic >= 1000:roman += "M"arabic -= 1000elif arabic >= 900:roman += "CM"arabic -= 900elif arabic >= 500:roman += "D"arabic -= 500elif arabic >= 400:roman += "CD"arabic -= 400elif arabic >= 100:roman += "C"arabic -= 100elif arabic >= 90:roman += "XC"arabic -= 90elif arabic >= 50:roman += "L"arabic -= 50elif arabic >= 40:roman += "XL"arabic -= 40elif arabic >= 10:roman += "X"arabic -= 10elif arabic >= 9:roman += "IX"arabic -= 9elif arabic >= 5:roman += "V"arabic -= 5elif arabic >= 4:roman += "IV"arabic -= 4else:roman += "I"arabic -= 1return romandef solve():n = input()ans = 0for roman in input().split():ans += roman2arabic(roman)if ans > 3999:print("ERROR")return# print(ans)ans_roman = arabic2roman(ans)print(ans_roman)if __name__=="__main__":solve()