>>422
できたよー

TABLE = {
  1 => 'I',
  5 => 'V',
  10 => 'X',
  50 => 'L',
  100 => 'C',
  500 => 'D',
  1000 => 'M',
  5000 => '',
  10000 => ''
}
  
def convert_one(value)
  value = value.to_i
  case value
  when 4
    '15'
  when 5
    '5'
  when 9
    '10'
  else
    if value < 4
      '1' * value
    elsif value < 9
      '5' + '1' * (value - 5)
    else
      raise
    end # if
  end # case
end # def

def int_to_roman(value)
  digit = 1
  result = []
  value.to_s.scan(/./).reverse.each do |d|
    result.push(convert_one(d).tr('150', "#{TABLE[digit]}#{TABLE[digit * 5]}#{TABLE[digit * 10]}"))
    digit *= 10
  end
  result.reverse.join
end # def

while line = gets
  value = line.to_i
  if value < 1000 || 4000 < value
    puts "1000〜4000の数字を入力しろや、な。"
  else
    puts int_to_roman(value)
  end # if
end

Rubyだけどな(w
参考にはなるんじゃないかな。