この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
114. BigIntの掛け算を実装する

解法:

この問題は二つの数を掛け算するアルゴリズムを実装する問題で、普通の掛け算を実装することができます。

具体的には、以下の手順を実行します。

  1. 一つ目の数の各桁について、二つ目の数の全ての桁と掛け算を行います。
  2. 一つ目の数の各桁に対応する桁に、掛け算の結果を足し合わせていきます。この時、各桁の桁数が異なるため、足し合わせる場所に注意が必要です。
  3. 計算途中で生じた桁上がりをふくめ、最終結果を文字列として返します。

以下のような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'