Problem 89 「ローマ数字」

ローマ数字の記法は一つの数について沢山ある場合が存在する (FAQを見よ). しかし, ある数については最良の記法が必ず存在する.

例えば, 16の正しい記法を全て並べてみる.

IIIIIIIIIIIIIIII
VIIIIIIIIIII
VVIIIIII
XIIIIII
VVVI
XVI

最後の例は, 最小の文字数で表せるという意味で, 最も効率が良い.

11Kのテキストファイルfilep089_roman.txt は1000個のローマ記法で書かれた数を含んでいる. これらは, 正しい記法に従っている. 即ち, 大きい数から順に書かれていて, 引き算ペアのルールにも従っている(このルールについてはFAQを見よ) 但し, 最小の文字数で表されているとは限らない.

最小形で書いたときに, 何文字節約できるかを求めよ.

注: ファイル中の全てのローマ数字には, 5つ以上の同じ文字が連続して含まれることはない.


FAQ: ローマ数字のルール

(訳者:概略のみ与える)

IVXLCDM
1510501005001000

基本法則1

全ての文字はサイズの降順に並ぶ

基本法則2

引き算ペアについて.

X (10) + IX (9) として19=XIXと表せる. ただし, 8をIIXと二文字以上を引くことは許されない.

  1. I, X, Cのみが引き算ペアの最初の文字として許される.
  2. IはVまたはXの前に来ることが許される
  3. XはLまたはCの前に来ることが許される
  4. CはDまたはMの前に来ることが許される

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-10-23 (土) 21:04:00