結果
| 問題 | 
                            No.518 ローマ数字の和
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2017-05-28 22:31:17 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,865 bytes | 
| コンパイル時間 | 216 ms | 
| コンパイル使用メモリ | 12,672 KB | 
| 実行使用メモリ | 10,752 KB | 
| 最終ジャッジ日時 | 2024-09-21 15:38:11 | 
| 合計ジャッジ時間 | 1,699 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 16 WA * 3 | 
ソースコード
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 = 0
    for 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 arabic
def arabic2roman(arabic: int) -> str:
    roman = ""
    while arabic > 0:
        if arabic >= 1000:
            roman += "M"
            arabic -= 1000
        elif arabic >= 900:
            roman += "CM"
            arabic -= 900
        elif arabic >= 500:
            roman += "D"
            arabic -= 500
        elif arabic >= 400:
            roman += "CD"
            arabic -= 500
        elif arabic >= 100:
            roman += "C"
            arabic -= 100
        elif arabic >= 90:
            roman += "XC"
            arabic -= 90
        elif arabic >= 50:
            roman += "L"
            arabic -= 50
        elif arabic >= 40:
            roman += "XL"
            arabic -= 40
        elif arabic >= 10:
            roman += "X"
            arabic -= 10
        elif arabic >= 9:
            roman += "IX"
            arabic -= 9
        elif arabic >= 5:
            roman += "V"
            arabic -= 5
        elif arabic >= 4:
            roman += "IV"
            arabic -= 4
        else:
            roman += "I"
            arabic -= 1
    return roman 
def solve():
    n = input()
    ans = 0
    for 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()