在 JavaScript 中对数组中的数字执行幂运算
问题
我们需要编写一个 JavaScript 函数,该函数接收一个偶数长度的整数数组 arr。
假设一个数字 num,其中 -
num = (arr[0] * arr[0] + arr[1] * arr[1]) * (arr[2] * arr[2] + arr[3] * arr[3]) * … * (arr[n-2] * arr[n-2] + arr[n-1] * arr[n-1])
其中 n 是数组的长度。
我们的函数应查找并返回一个包含两个数字 [A, B] 的数组,使得:-
A2 + B2 = num
例如,如果数组为:-
[1, 2, 3, 4]
则 num = ( 1 + 4 ) * (9 + 16) = 125
则输出应为:-
[2, 11]
因为 22 + 112 = 125
示例
以下是代码:-
const arr = [1, 2, 3, 4]; const findMatchingSumArray = (arr = []) => { let squaredSum = 1; for(let i = 0; i < arr.length - 1; i += 2){ const curr = arr[i]; const next = arr[i + 1]; squaredSum *= (Math.pow(curr, 2) + Math.pow(next, 2)); }; for(let k = 0; k * k < squaredSum; k++){ for(let j = 0; (k * k) + (j * j) <= squaredSum; j++){ if((k * k) + (j * j) === squaredSum){ return [k, j]; }; }; }; return []; }; console.log(findMatchingSumArray(arr));
输出
以下是在控制台中的输出:-
[2, 11]
广告