結果
問題 | No.518 ローマ数字の和 |
ユーザー |
|
提出日時 | 2017-05-28 21:51:07 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 12 ms / 2,000 ms |
コード長 | 2,081 bytes |
コンパイル時間 | 79 ms |
コンパイル使用メモリ | 7,040 KB |
実行使用メモリ | 6,528 KB |
最終ジャッジ日時 | 2024-09-21 15:23:27 |
合計ジャッジ時間 | 1,119 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
N = input()R = raw_input().split()def parse(r):n = len(r)p = 0ans = 0while p < n:if r[p:].startswith('IV'):ans += 4p += 2elif r[p:].startswith('IX'):ans += 9p += 2elif r[p:].startswith('XL'):ans += 40p += 2elif r[p:].startswith('XC'):ans += 90p += 2elif r[p:].startswith('CD'):ans += 400p += 2elif r[p:].startswith('CM'):ans += 900p += 2elif r[p:].startswith('I'):ans += 1p += 1elif r[p:].startswith('V'):ans += 5p += 1elif r[p:].startswith('X'):ans += 10p += 1elif r[p:].startswith('L'):ans += 50p += 1elif r[p:].startswith('C'):ans += 100p += 1elif r[p:].startswith('D'):ans += 500p += 1elif r[p:].startswith('M'):ans += 1000p += 1return ansdef rev(n):ans = ''x = n / 1000for i in xrange(x):ans += 'M'n -= x * 1000x = n / 100if x == 9:ans += 'CM'elif x >= 5:ans += 'D'for i in xrange(x-5):ans += 'C'elif x == 4:ans += 'CD'else:for i in xrange(x):ans += 'C'n -= x * 100x = n / 10if x == 9:ans += 'XC'elif x >= 5:ans += 'L'for i in xrange(x-5):ans += 'X'elif x == 4:ans += 'XL'else:for i in xrange(x):ans += 'X'n -= x * 10x = nif x == 9:ans += 'IX'elif x >= 5:ans += 'V'for i in xrange(x-5):ans += 'I'elif x == 4:ans += 'IV'else:for i in xrange(x):ans += 'I'return anshoge = 0for r in R:hoge += parse(r)print rev(hoge) if hoge < 4000 else "ERROR"