Pythonで整数をローマ数字に変換するプログラム
数値がnumであるとします。それを同等のローマ数字に変換する必要があります。ローマ数字には、以下のような記号と値が含まれています-
- "I" =1
- "V" =5
- "X" =10
- "L" =50
- "C" =100
- "D" =500
- "M" =1000
これらの記号は通常、最大から最小、左から右の順序で記述され、すべての記号の値を合計することで計算できます。ただし、いくつかの特殊なケースでは、低い値のシンボルが高い値のシンボルの左側にあり、彼は低い値が高い値から減算されることを示します。
これらはそのような場合の例です-
- 「I」は「V」の前、値4です。
- 「I」は「X」の前、値9です。
- 「X」は「L」の前にあり、値は40です。
- 「X」は「C」の前にあり、値は90です。
- 「C」は「D」の前にあり、値は400です。
- 「C」は「M」の前にあり、値は900です。
ローマ数字にはいくつかの規則もあります-
- シンボルが3回以上繰り返されることはありません。
- 記号「V」、「L」、および「D」は繰り返されません。
したがって、入力がn =1520の場合、「MDXX」は1000 + 500 + 10 + 10 =1520を示すため、出力は「MDXX」になります。
これを解決するには、次の手順に従います-
- res:=空白の文字列
- table =この形式のペア(val、symbol)を含むリスト。ここで、valは値であり、symbolは関連するシンボルです[(1000、 "M")、(900、 "CM")、(500、 " D ")、(400、" CD ")、(100、" C ")、(90、" XC ")、(50、" L ")、(40、" XL ")、(10、" X " )、(9、 "IX")、(5、 "V")、(4、 "IV")、(1、 "I")]
- テーブル内の各ペア(cap、roman)について、
- d:=num/capのフロア
- m:=num mod cap
- res:=res + roman * d
- num:=m
- return res
例
理解を深めるために、次の実装を見てみましょう-
def solve(num): res = "" table = [ (1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I"), ] for cap, roman in table: d, m = divmod(num, cap) res += roman * d num = m return res num = 1520 print(solve(num))
入力
1520
出力
MDXX
-
キロメートルをマイルに変換するPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −距離はキロメートルで与えられ、マイルに変換する必要があります 私たちが知っているように、1キロメートルは0.62137マイルに相当します。 使用する式 Miles = kilometer * 0.62137 それでは、以下の実装の概念を見てみましょう- 例 kilometers = 5.5 # conversion factor as 1 km = 0.621371 miles conv = 0.621371 # calculation miles = kilometers * conv print(k
-
16進文字列を10進数に変換するPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin