結果
| 問題 |
No.518 ローマ数字の和
|
| コンテスト | |
| ユーザー |
h_noson
|
| 提出日時 | 2017-06-14 23:13:30 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 843 bytes |
| コンパイル時間 | 177 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-09-24 23:28:52 |
| 合計ジャッジ時間 | 1,665 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 3 |
| other | WA * 19 |
ソースコード
def read_roman(s):
table = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, 'IV': 4, 'IX': 9, 'XL': 40, 'XC': 90, 'CD': 400, 'CM': 900}
num = 0
while s:
for c in sorted(table)[::-1]:
if s.startswith(c):
num += table[c]
s = s[len(c):]
break
return num
def print_roman(num):
table = {1: 'I', 5: 'V', 10: 'X', 50: 'L', 100: 'C', 500: 'D', 1000: 'M', 4: 'IV', 9: 'IX', 40: 'XL', 90: 'XC', 400: 'CD', 900: 'CM'}
s = ""
while num:
for n in sorted(table)[::-1]:
if num >= n:
num -= n
s += table[n]
break
print(s)
n = int(input())
ans = 0
for r in input().split(' '):
ans += read_roman(r)
print(ans)
if ans < 4000:
print_roman(ans)
else:
print("ERROR")
h_noson