結果
問題 | No.518 ローマ数字の和 |
ユーザー |
|
提出日時 | 2017-08-09 11:37:03 |
言語 | Ruby (3.4.1) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,311 bytes |
コンパイル時間 | 45 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 12,288 KB |
最終ジャッジ日時 | 2024-10-12 03:53:17 |
合計ジャッジ時間 | 2,954 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 2 WA * 17 |
コンパイルメッセージ
Syntax OK
ソースコード
N = gets.to_iR = gets.chomp.split.mapdef decode sv, ptr = 0, 0val = { ?I => 1, ?V => 5, ?X => 10, ?L => 50, ?C => 100, ?D => 500, ?M => 1000 }until ptr == s.sizewhile s.size - ptr >= 2 && val[s[ptr]] < val[s[ptr + 1]]v += val[s[ptr + 1]] - val[s[ptr]]ptr += 2endcase s[ptr]when ?M(ptr += 1; v += 1000) while s[ptr] == ?Mwhen ?D(ptr += 1; v += 500) while s[ptr] == ?Dwhen ?C(ptr += 1; v += 100) while s[ptr] == ?Cwhen ?L(ptr += 1; v += 50) while s[ptr] == ?Lwhen ?X(ptr += 1; v += 10) while s[ptr] == ?Xwhen ?V(ptr += 1; v += 5) while s[ptr] == ?Vwhen ?I(ptr += 1; v += 1) while s[ptr] == ?Iendendvenddef encode vs = ""(s << ?M; v -= 1000) until v < 1000(s << "CM"; v -= 900) until v < 900(s << ?D; v -= 500) until v < 500(s << "CD"; v -= 400) until v < 400(s << ?C; v -= 100) until v < 100(s << "XC"; v -= 90) until v < 90(s << ?L; v -= 50) until v < 50(s << "XL"; v -= 40) until v < 40(s << ?X; v -= 10) until v < 10(s << "IX"; v -= 9) until v < 9(s << ?V; v -= 5) until v < 5(s << "IV"; v -= 4) until v < 4(s << ?I; v -= 1) until v < 1sendtot = R.inject(0) { |a, b| a + decode(b) }puts tot > 3999 ? "ERROR" : encode(tot)