結果
問題 |
No.518 ローマ数字の和
|
ユーザー |
![]() |
提出日時 | 2025-03-20 21:20:28 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 36 ms / 2,000 ms |
コード長 | 934 bytes |
コンパイル時間 | 203 ms |
コンパイル使用メモリ | 82,844 KB |
実行使用メモリ | 53,816 KB |
最終ジャッジ日時 | 2025-03-20 21:21:19 |
合計ジャッジ時間 | 1,615 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
def roman_to_int(s): roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} total = 0 prev_value = 0 for c in reversed(s): current_value = roman[c] if current_value < prev_value: total -= current_value else: total += current_value prev_value = current_value return total def int_to_roman(num): val = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ] syms = [ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" ] res = '' i = 0 while num > 0: while num >= val[i]: res += syms[i] num -= val[i] i += 1 return res n = int(input()) romans = input().split() sum_total = sum(roman_to_int(r) for r in romans) if sum_total > 3999: print("ERROR") else: print(int_to_roman(sum_total))