結果
| 問題 |
No.518 ローマ数字の和
|
| コンテスト | |
| ユーザー |
char134217728
|
| 提出日時 | 2017-08-20 13:17:05 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 91 ms / 2,000 ms |
| コード長 | 727 bytes |
| コンパイル時間 | 64 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,160 KB |
| 最終ジャッジ日時 | 2024-10-14 17:23:42 |
| 合計ジャッジ時間 | 3,055 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 19 |
コンパイルメッセージ
Syntax OK
ソースコード
m = {
"" => 0,
"I" => 1,
"II" => 2,
"III" => 3,
"IV" => 4,
"V" => 5,
"VI" => 6,
"VII" => 7,
"VIII" => 8,
"IX" => 9,
"X" => 10,
"XX" => 20,
"XXX" => 30,
"XL" => 40,
"L" => 50,
"LX" => 60,
"LXX" => 70,
"LXXX" => 80,
"XC" => 90,
"C" => 100,
"CC" => 200,
"CCC" => 300,
"CD" => 400,
"D" => 500,
"DC" => 600,
"DCC" => 700,
"DCCC" => 800,
"CM" => 900,
"M" => 1000,
"MM" => 2000,
"MMM" => 3000
}
gets
s = 0
gets.split(" ").each do |_s|
_s =~ /\A(M*)(CM|D|CD|)(C*)(XC|L|XL|)(X*)(IX|V|IV|)(I*)\z/
(1..7).each do |i|
s += m[$~[i]]
end
end
if s > 3999
puts :ERROR
exit
end
m = m.invert
t = ""
[1000, 100, 10, 1].each do |i|
t << m[s / i * i]
s %= i
end
puts t
char134217728