結果
問題 | No.518 ローマ数字の和 |
ユーザー |
![]() |
提出日時 | 2020-09-21 18:34:25 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 40 ms / 2,000 ms |
コード長 | 1,588 bytes |
コンパイル時間 | 159 ms |
コンパイル使用メモリ | 82,252 KB |
実行使用メモリ | 59,236 KB |
最終ジャッジ日時 | 2024-06-24 11:52:23 |
合計ジャッジ時間 | 1,946 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
import sysdef input(): return sys.stdin.readline().strip()def list2d(a, b, c): return [[c for j in range(b)] for i in range(a)]def list3d(a, b, c, d): return [[[d for k in range(c)] for j in range(b)] for i in range(a)]def list4d(a, b, c, d, e): return [[[[e for l in range(d)] for k in range(c)] for j in range(b)] for i in range(a)]def ceil(x, y=1): return int(-(-x // y))def INT(): return int(input())def MAP(): return map(int, input().split())def LIST(N=None): return list(MAP()) if N is None else [INT() for i in range(N)]def Yes(): print('Yes')def No(): print('No')def YES(): print('YES')def NO(): print('NO')sys.setrecursionlimit(10**9)INF = 10**19MOD = 10**9 + 7EPS = 10**-10D = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 }N = INT()A = input().split()sm = 0for i in range(N):s = A[i]cnt = D[s[0]]for j in range(len(s)-1):if s[j:j+2] in ['IV', 'IX', 'XL', 'XC', 'CD', 'CM']:cnt += D[s[j+1]] - D[s[j]]*2else:cnt += D[s[j+1]]sm += cntif sm >= 4000:print('ERROR')exit()ans = ''cur, sm = divmod(sm, 1000)ans += 'M' * curcur, sm = divmod(sm, 100)if cur == 4:ans += 'CD'elif cur == 9:ans += 'CM'else:d, m = divmod(cur, 5)ans += 'D'*d + 'C'*mcur, sm = divmod(sm, 10)if cur == 4:ans += 'XL'elif cur == 9:ans += 'XC'else:d, m = divmod(cur, 5)ans += 'L'*d + 'X'*mcur, sm = divmod(sm, 1)if cur == 4:ans += 'IV'elif cur == 9:ans += 'IX'else:d, m = divmod(cur, 5)ans += 'V'*d + 'I'*mprint(ans)