結果
問題 | No.518 ローマ数字の和 |
ユーザー |
![]() |
提出日時 | 2017-05-28 23:11:06 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 86 ms / 2,000 ms |
コード長 | 1,552 bytes |
コンパイル時間 | 83 ms |
コンパイル使用メモリ | 7,296 KB |
実行使用メモリ | 12,288 KB |
最終ジャッジ日時 | 2024-09-21 15:50:36 |
合計ジャッジ時間 | 2,570 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
コンパイルメッセージ
Syntax OK
ソースコード
_ = gets.to_inums = gets.chomp.splitsum = 0nums.each do |num|result = 0pos = 0while pos <= num.sizecase num[pos]when "I"if num[pos + 1] == "V"result += 4pos += 1elsif num[pos + 1] == "X"result += 9pos += 1elseresult += 1endwhen "V"result += 5when "X"if num[pos + 1] == "L"result += 40pos += 1elsif num[pos + 1] == "C"result += 90pos += 1elseresult += 10endwhen "L"result += 50when "D"result += 500when "C"if num[pos + 1] == "D"result += 400pos += 1elsif num[pos + 1] == "M"result += 900pos += 1elseresult += 100endwhen "M"result += 1000endpos += 1endsum += resultendres = ""res += "M" * (sum / 1000).floorrest = sum % 1000if (rest / 100).floor == 4res += "CD"elsif (rest / 100).floor == 9res += "CM"elsif (rest / 100).floor >= 5res += "D" + "C" * ((rest / 100).floor - 5)elseres += "C" * (rest / 100).floorendrest = rest % 100if (rest / 10).floor == 4res += "XL"elsif (rest / 10).floor == 9res += "XC"elsif (rest / 10).floor >= 5res += "L" + "X" * ((rest / 10).floor - 5)elseres += "X" * (rest / 10).floorendrest = rest % 10if rest == 4res += "IV"elsif rest == 9res += "IX"elsif rest >= 5res += "V" + "I" * (rest - 5)elseres += "I" * restendputs sum > 3999 ? "ERROR" : res