結果
問題 | No.518 ローマ数字の和 |
ユーザー |
|
提出日時 | 2017-05-28 22:23:26 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 31 ms / 2,000 ms |
コード長 | 1,209 bytes |
コンパイル時間 | 79 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2024-09-21 15:35:09 |
合計ジャッジ時間 | 1,404 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
def r2a(r):c2v = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}r = r.replace('IV', 'IIII')r = r.replace('IX', 'VIIII')r = r.replace('XL', 'XXXX')r = r.replace('XC', 'LXXXX')r = r.replace('CD', 'CCCC')r = r.replace('CM', 'DCCCC')return sum(c2v[c] for c in r)def a2r(a):if a > 3999:return "ERROR"r = []while (a >= 1000):r.append('M')a -= 1000while (a >= 500):r.append('D')a -= 500while (a >= 100):r.append('C')a -= 100while (a >= 50):r.append('L')a -= 50while (a >= 10):r.append('X')a -= 10while (a >= 5):r.append('V')a -= 5while (a >= 1):r.append('I')a -= 1r = ''.join(r)r = r.replace('DCCCC', 'CM')r = r.replace('CCCC', 'CD')r = r.replace('LXXXX', 'XC')r = r.replace('XXXX', 'XL')r = r.replace('VIIII', 'IX')r = r.replace('IIII', 'IV')return rdef solve(N, Rs):a = sum(map(r2a, Rs))return a2r(a)def read_data():N = int(input())Rs = list(input().split())return N, RsN, Rs = read_data()print(solve(N, Rs))