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