문제
짝수 길이의 정수 배열(arr)을 취하는 JavaScript 함수를 작성해야 합니다.
−
인 숫자 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]
그런 다음 숫자 =( 1 + 4 ) * (9 + 16) =125
그런 다음 출력은 -
여야 합니다.[2, 11]
2 2 이기 때문에 + 11 2 =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]