1

私は、ユーザーが二重連結リストを使用して構築された大きな数値で算術演算を実行できるようにするプログラムを書いています。これまで足し算の関数を作ってきましたが、掛け算の関数を作ろうとしているのですが、なかなかいいものが思いつきません。私はこれを行うことを考えていました:

1000 と 2000|0000 という 2 つの数値があるとします (| は、数値を構成するさまざまなノード間の区切りを表します)。数字を掛けると、200|0000|0000 になります。最初に 2 つのノードを乗算し、それを小さなノードに分割する関数を作成できます。その後、次のノードを乗算し、最後のノードのサイズを確認し、スペースが残っている場合は、そのノードにパーツを追加し、残りを次のノードに配置します。しかし、一方の数値が他方の数値よりも小さい場合はどうなるでしょうか。次に、未定義の数値を掛けます..このメソッドには「未来」がありますか? または、別のものを探す必要があります(いくつかの調査を行いましたが、これまでに役立つものは何も見つかりませんでした)

4

1 に答える 1

1

パフォーマンスが重要でない場合は、「ハイスクール メソッド」を使用できます。最初に数値を 1 桁で乗算するメソッドを実装し、次に数値の 1 つを他の数値で乗算し始め (それぞれの結果にオフセットを追加します)、これらの数値を加算します。何かのようなもの:

123 x 456 =
         738
+       615
       492
______________
       56088

リンクされたリストでこれを実装することはそれほど難しくありません。

于 2012-12-31T07:42:32.870 に答える