結果
問題 | No.518 ローマ数字の和 |
ユーザー | rpy3cpp |
提出日時 | 2017-05-28 22:23:26 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
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 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 30 ms
10,880 KB |
testcase_01 | AC | 31 ms
10,752 KB |
testcase_02 | AC | 29 ms
10,624 KB |
testcase_03 | AC | 29 ms
10,752 KB |
testcase_04 | AC | 29 ms
10,880 KB |
testcase_05 | AC | 29 ms
10,880 KB |
testcase_06 | AC | 31 ms
10,880 KB |
testcase_07 | AC | 29 ms
10,752 KB |
testcase_08 | AC | 27 ms
10,880 KB |
testcase_09 | AC | 27 ms
10,752 KB |
testcase_10 | AC | 28 ms
10,752 KB |
testcase_11 | AC | 28 ms
10,752 KB |
testcase_12 | AC | 28 ms
10,752 KB |
testcase_13 | AC | 28 ms
10,752 KB |
testcase_14 | AC | 28 ms
10,752 KB |
testcase_15 | AC | 31 ms
10,880 KB |
testcase_16 | AC | 26 ms
10,752 KB |
testcase_17 | AC | 27 ms
10,624 KB |
testcase_18 | AC | 26 ms
10,880 KB |
testcase_19 | AC | 26 ms
10,752 KB |
testcase_20 | AC | 26 ms
10,752 KB |
testcase_21 | AC | 26 ms
10,752 KB |
ソースコード
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 -= 1000 while (a >= 500): r.append('D') a -= 500 while (a >= 100): r.append('C') a -= 100 while (a >= 50): r.append('L') a -= 50 while (a >= 10): r.append('X') a -= 10 while (a >= 5): r.append('V') a -= 5 while (a >= 1): r.append('I') a -= 1 r = ''.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 r def solve(N, Rs): a = sum(map(r2a, Rs)) return a2r(a) def read_data(): N = int(input()) Rs = list(input().split()) return N, Rs N, Rs = read_data() print(solve(N, Rs))