Wolfram言語

代数と整数論

数の分解

NumberDecomposeは,数を,例えば貨幣のようないくつかの単位に分解して表す.

バハマドル(BSD)は次の紙幣を使っている.

In[1]:=
Click for copyable input
denominations = {100, 50, 20, 10, 5, 3, 2, 1, 1/2};

BSDには3ドル札があるため,指定された額を分解する方法が他の通貨よりも多い.次は,連続する単位の間の商である.

In[2]:=
Click for copyable input
Divide @@@ Subsequences[denominations, {2}]
Out[2]=

ほとんどの通貨システムでは,商は2と5/2しかないが,この場合は5/3と3/2もある.

In[3]:=
Click for copyable input
Divide @@@ Subsequences[denominations, {2}]; BarChart[%]
Out[3]=

ある金額をバハマドルの紙幣で表すとすると,それぞれの紙幣が何枚ずつ必要であるかを調べる.

In[4]:=
Click for copyable input
NumberDecompose[598.50, denominations]
Out[4]=

NumberComposeを使ってもとの金額に戻す.

In[5]:=
Click for copyable input
NumberCompose[{5, 1, 2, 0, 1, 1, 0, 0, 1.}, denominations]
Out[5]=

次は,それぞれの紙幣を1枚ずつ使った場合の合計金額である.

In[6]:=
Click for copyable input
NumberCompose[Table[1, Length@denominations], denominations] // N
Out[6]=

関連する例

de en es fr ko pt-br ru zh