結果

問題 No.518 ローマ数字の和
ユーザー finefine
提出日時 2017-05-28 21:46:29
言語 Ruby
(3.3.0)
結果
AC  
実行時間 95 ms / 2,000 ms
コード長 812 bytes
コンパイル時間 51 ms
コンパイル使用メモリ 11,924 KB
実行使用メモリ 16,092 KB
最終ジャッジ日時 2023-10-21 14:07:41
合計ジャッジ時間 2,899 ms
ジャッジサーバーID
(参考情報)
judge15 / judge9
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 95 ms
16,092 KB
testcase_01 AC 89 ms
16,092 KB
testcase_02 AC 91 ms
16,092 KB
testcase_03 AC 88 ms
16,092 KB
testcase_04 AC 87 ms
16,092 KB
testcase_05 AC 89 ms
16,092 KB
testcase_06 AC 88 ms
16,092 KB
testcase_07 AC 88 ms
16,092 KB
testcase_08 AC 87 ms
16,092 KB
testcase_09 AC 87 ms
16,092 KB
testcase_10 AC 88 ms
16,092 KB
testcase_11 AC 89 ms
16,092 KB
testcase_12 AC 88 ms
16,092 KB
testcase_13 AC 88 ms
16,092 KB
testcase_14 AC 88 ms
16,092 KB
testcase_15 AC 88 ms
16,092 KB
testcase_16 AC 86 ms
16,092 KB
testcase_17 AC 86 ms
16,092 KB
testcase_18 AC 86 ms
16,092 KB
testcase_19 AC 86 ms
16,092 KB
testcase_20 AC 87 ms
16,092 KB
testcase_21 AC 86 ms
16,092 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:37: warning: assigned but unused variable - n
Syntax OK

ソースコード

diff #

@h = {?I => 1, ?V => 5, ?X => 10, ?L => 50, ?C => 100, ?D => 500, ?M => 1000}
@h2 = @h.invert

def hoge(r)
    m = r.size
    res = @h[r[m - 1]]
    (m-1).times do |i|
        if @h[r[i]] < @h[r[i + 1]]
            res -= @h[r[i]]
        else
            res += @h[r[i]]
        end
    end
    return res
end

def foo(x)
    return "ERROR" if x >= 4000
    res = ""
    d = 1
    while x > 0
        if x % 10 == 9
            res = @h2[d] + @h2[d * 10] + res
        elsif x % 10 == 4
            res = @h2[d] + @h2[d * 5] + res
        elsif x % 10 > 4
            res = @h2[d * 5] + @h2[d] * (x % 10 - 5) + res
        else
            res = @h2[d] * (x % 10) + res
        end
        x /= 10
        d *= 10
    end
    return res
end

n = gets.to_i
puts foo(gets.chomp.split.map{|r| hoge(r)}.inject(:+))
0