Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr có độ dài chẵn. Giả sử một số num mà:
num = (arr[0]^2 + arr[1]^2) * (arr[2]^2 + arr[3]^2) * ... * (arr[n-2]^2 + arr[n-1]^2)
Trong đó n là độ dài mảng. Hàm cần tìm và trả về mảng hai số [A, B] sao cho:
A^2 + B^2 = num
Ví dụ, nếu mảng là [1, 2, 3, 4], thì num = (1+4)*(9+16) = 125. Kết quả nên là [2, 11] vì 2^2 + 11^2 = 125.
Ví dụ
Dưới đây là mã nguồn:
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));Kết quả
Kết quả đầu ra trong console:
[2, 11]