この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
114. BigIntの掛け算を実装する
解法:
この問題は二つの数を掛け算するアルゴリズムを実装する問題で、普通の掛け算を実装することができます。
具体的には、以下の手順を実行します。
- 一つ目の数の各桁について、二つ目の数の全ての桁と掛け算を行います。
- 一つ目の数の各桁に対応する桁に、掛け算の結果を足し合わせていきます。この時、各桁の桁数が異なるため、足し合わせる場所に注意が必要です。
- 計算途中で生じた桁上がりをふくめ、最終結果を文字列として返します。
以下のようなJavaScript関数を実装することができます。
function multiply(a, b) { const result = Array(a.length + b.length).fill(0); // 結果を格納する配列を初期化 // 全ての桁について、掛け算を行う for (let i = 0; i < a.length; i++) { for (let j = 0; j < b.length; j++) { result[i + j] += parseInt(a[i]) * parseInt(b[j]); // 桁数に対応した場所に結果を格納 } } // 繰り上がりを処理しながら、桁ごとに足し合わせる let carry = 0; for (let i = result.length - 1; i >= 0; i--) { const sum = result[i] + carry; result[i] = sum % 10; // 1の位を格納 carry = (sum - result[i]) / 10; // 繰り上がりを更新 } // 結果を文字列に変換して返す while (result.length > 1 && result[0] === 0) result.shift(); // 先頭のゼロを取り除く return result.join('');}
この関数を以下のように呼び出すと、正しい結果が返ってくることが確認できます。
multiply('1123456787654323456789', '1234567887654323456'); // '1386983673205309924427166592431045142784'