結果
| 問題 |
No.518 ローマ数字の和
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-05-28 22:18:01 |
| 言語 | Ruby (3.4.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,450 bytes |
| コンパイル時間 | 111 ms |
| コンパイル使用メモリ | 7,680 KB |
| 実行使用メモリ | 12,288 KB |
| 最終ジャッジ日時 | 2024-09-21 15:33:12 |
| 合計ジャッジ時間 | 2,966 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 15 WA * 4 |
コンパイルメッセージ
Syntax OK
ソースコード
def scan; gets.split.map(&:to_i); end
def say(w)
puts w;exit
end
def revert(str)
val = 0
if str=~/^(M+)/
val += $1.size*1000
str=str[$1.size..-1]
end
if str=~/^(CM)/
val += 900
str=str[$1.size..-1]
end
if str=~/^(DCCC)/
val += 800
str=str[$1.size..-1]
end
if str=~/^(DCC)/
val += 700
str=str[$1.size..-1]
end
if str=~/^(DC)/
val += 600
str=str[$1.size..-1]
end
if str=~/^(D)/
val += 500
str=str[$1.size..-1]
end
if str=~/^(CD)/
val += 400
str=str[$1.size..-1]
end
if str=~/^(CCC)/
val += 300
str=str[$1.size..-1]
end
if str=~/^(CC)/
val += 200
str=str[$1.size..-1]
end
if str=~/^(C)/
val += 100
str=str[$1.size..-1]
end
if str=~/^(XC)/
val += 90
str=str[$1.size..-1]
end
if str=~/^(LXXX)/
val += 80
str=str[$1.size..-1]
end
if str=~/^(LXX)/
val += 70
str=str[$1.size..-1]
end
if str=~/^(LX)/
val += 60
str=str[$1.size..-1]
end
if str=~/^(L)/
val += 50
str=str[$1.size..-1]
end
if str=~/^(XL)/
val += 40
str=str[$1.size..-1]
end
if str=~/^(XXX)/
val += 30
str=str[$1.size..-1]
end
if str=~/^(XX)/
val += 20
str=str[$1.size..-1]
end
if str=~/^(X)/
val += 10
str=str[$1.size..-1]
end
if str=~/^(IX)/
val += 9
str=str[$1.size..-1]
end
if str=~/^(VIII)/
val += 8
str=str[$1.size..-1]
end
if str=~/^(VII)/
val += 7
str=str[$1.size..-1]
end
if str=~/^(VI)/
val += 6
str=str[$1.size..-1]
end
if str=~/^(V)/
val += 5
str=str[$1.size..-1]
end
if str=~/^(IV)/
val += 4
str=str[$1.size..-1]
end
if str=~/^(I+)/
val += $1.size
str=str[$1.size..-1]
end
val
end
def convert(val)
say "ERROR" if 4000<= val
str = 'M'*(val/1000)+'C'*((val%1000)/ 100)+'X'*((val%100)/ 10)+'I'*((val%10))
str.gsub('CCCCC','D').gsub('XXXXX','L').gsub('IIIII','V').gsub('DCCC','CM').gsub('CCCC','CD').gsub('LXXXX','XC').gsub('XXXX','XL').gsub('VIIII','IX').gsub('IIII','IV')
end
gets
puts convert(gets.split.map{|e|revert(e)}.inject(:+))