Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 큐브의 합이 N(a^3 + b^3 =N)인 쌍(a, b)을 셉니다.

<시간/>

우리에게 숫자 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