Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các cặp (a, b) có tổng khối là N (a ^ 3 + b ^ 3 =N) trong C ++

Chúng ta được cho một số N. Mục tiêu là tìm các cặp số dương có thứ tự sao cho tổng các hình lập phương của chúng là N.

Chúng ta sẽ thực hiện điều này bằng cách tìm nghiệm của phương trình a 3 + b 3 =N. Trong đó a không nhiều hơn căn bậc hai của N và b có thể được tính là căn bậc hai của (N-a 3 ).

Hãy cùng hiểu với các ví dụ.

Đầu vào

N=35

Đầu ra

Count of pairs of (a,b) where a^3+b^3=N: 2

Giải thích

Các cặp
Pairs will be (2,3) and (3,2). 23+33=8+27=35

Đầu vào

N=100

Đầu ra

Count of pairs of (a,b) where a^3+b^3=N: 0

Giải thích

No such pairs possible.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy số nguyên N.

  • Hàm cubeSum (int n) nhận n và trả về số lượng các cặp có thứ tự với tổng các khối là n.

  • Lấy số lượng biến ban đầu là 0 cho các cặp.

  • Di chuyển bằng vòng lặp for để tìm.

  • Bắt đầu từ a =1 đến a <=cbrt (n) là căn bậc hai của n.

  • Tính khối lập phương của b dưới dạng n-pow (a, 3).

  • Tính b dưới dạng cbrt (bcube)

  • Nếu pow (b, 3) ==bcube. Số lượng tăng lên 1.

  • Ở cuối tất cả các vòng đếm sẽ có tổng số các cặp như vậy.

  • Trả về kết quả là số lượng.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of pairs of (a,b) where a^3+b^3=N: 2