우리에게 숫자 N이 주어졌습니다. 목표는 제곱의 합이 N이 되도록 정렬된 양수의 쌍을 찾는 것입니다.
방정식 2 에 대한 솔루션을 찾아 이를 수행합니다. + b 2 =N. 여기서 N의 제곱근보다 크지 않고 b는 (N-a 2 의 제곱근으로 계산할 수 있습니다. ).
예를 들어 이해합시다.
입력
N=100
출력
Count of pairs of (a,b) where a^3+b^3=N: 2
설명
Pairs will be (6,8) and (8,6). 62+82=36+64=100
입력
N=11
출력
Count of pairs of (a,b) where a^3+b^3=N: 0
설명
No such pairs possible.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
정수 N을 취합니다.
-
함수 squareSum(int n)은 n을 취하고 제곱합이 n인 순서쌍의 수를 반환합니다.
-
쌍의 경우 초기 변수 개수를 0으로 간주합니다.
-
for 루프를 사용하여 탐색합니다.
-
a=1에서 n의 제곱근인 a<=sqrt(n)까지 시작합니다.
-
b의 제곱을 n-pow(a,2)로 계산합니다.
-
b를 sqrt(bsquare)
로 계산 -
pow(b,2)==bsquare인 경우. 1씩 증가합니다.
-
모든 루프의 끝에서 count는 그러한 쌍의 총 수를 갖게 됩니다.
-
카운트를 결과로 반환합니다.
예시
#include <bits/stdc++.h> #include <math.h> using namespace std; int squareSum(int n){ int count = 0; for (int a = 1; a <= sqrt(n); a++){ int bsquare=n - (pow(a,2)); int b = sqrt(bsquare); if(pow(b,2)==bsquare){ count++; cout<<a; } } return count; } int main(){ int N =5; cout <<"Count of pairs of (a,b) where a^2+b^2=N: "<<squareSum(N); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of pairs of (a,b) where a^2+b^2=N: 122