結果
問題 | 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(:+))