2つの整数間の乗算は、次のように一連の加算に減らすことができます。
3 * 5 = 3 + 3 + 3 + 3 + 3 = 5 + 5 + 5
べき乗(上昇電力にbが)また、乗算のシリーズに低減することができます。
5 ^ 3 = 5 * 5 * 5
したがって、乗算式を作成することにより、べき乗を一連の加算に減らしてから、一連の加算に減らすことができます。たとえば、5 ^ 3
(5立方体)は次のように書き換えることができます。
5 ^ 3 = 5 * 5 * 5
= (5 + 5 + 5 + 5 + 5) * 5
= (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5)
= 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5
あなたのタスクは、累乗、乗算、加算で構成される式が加算されると、それを最短の加算系列に減らします。「最短」式は、+
シンボルの数が最も少ない式として定義されますが、元の式の2つの数字のうち1つだけを使用します。たとえば、の最短表現は10 * 2
です10 + 10
。
入力に含まれる数値はすべて正の整数であり、式は整数と大括弧(+
)に加えて、*
(加算)、(乗算)、および^
(指数)のみで構成されます(()
)が優先順位を示します。
出力は、正の整数と+
記号のみで構成される必要があります。削減の個々のステップを出力するのではなく、最終出力のみを出力する必要があります。出力は、入力に表示されない数字で構成することはできません。ただし、の代わりに3つの異なる記号を使用できますが、+*^
それらの記号は何かを言ってください
入力と出力を区切るスペースは、プログラムで使用される場合と使用されない場合があります。つまり3 * 5
、5 + 5 + 5
またはとして出力できます5+5+5
。
ほとんどの場合、追加は実際には実行されないことに注意してください。加算が実行されるのは、のようなものがある場合のみです。5 ^ (1 + 2)
その場合、続行するには加算が必要です-> 5 ^ 3 -> 5 * 5 * 5 -> ...
です。です。テストケース#4を参照してください。
コードは、あいまいな式に到達する入力を処理する必要はありません。たとえば、(2 + 2) * (4 + 1)
。これまでに説明した規則のため、目標は答えを計算することではなく、追加に単純化することです。そのため、結果は、式が解決または変換される順序に応じて異なる可能性があります(どの追加を単純化するか、どれを残すか)。別の無効な例:((3 + 2) ^ 2) ^ 3 -> ((3 + 2) * (3 + 2)) ^ 3 -> ???
。
これはコードゴルフなので、最短コードが勝ちます
テストケース
Input => output
5 ^ 3 + 4 * 1 ^ 5 => 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 4
2 ^ 1 * 2 + 3 + 9 => 2 + 2 + 3 + 9
2 ^ 1 * (2 + 3) + 9 => 2 + 3 + 2 + 3 + 9
2 ^ (1 * (2 + 3)) + 9 => 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 9
10 + 3 * 2 + 33 ^ 2 => 10 + 3 + 3 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33
100 * 3 => 100 + 100 + 100
2 ^ 1 + 2 ^ 1 + 2 ^ 2 + 8 ^ 1 => 2 + 2 + 2 + 2 + 8
(1 + 2 + 5 * 8 + 2 ^ 4) * 2 => 1 + 2 + 8 + 8 + 8 + 8 + 8 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + 2 + 8 + 8 + 8 + 8 + 8 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2
using only one of the two numbers in the original expression.
、元の式は3つ以上の数字を持つことができます。の8 + 8
有効な出力ではない理由がわかりません2 ^ 1 + 2 ^ 1 + 2 ^ 2 + 8 ^ 1
。この質問は私にはまだかなり明確ではありません。
**
代わりに使用でき^
ますか?