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

Đếm các cặp (a, b) có tổng bình phương là N (a ^ 2 + b ^ 2 =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 bình phương của chúng là N.

Chúng ta sẽ thực hiện việc này bằng cách tìm các nghiệm của phương trình a 2 + b 2 =N. Trong đó a không lớn 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 2 ).

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

Đầu vào

N=100

Đầ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 (6,8) and (8,6). 62+82=36+64=100

Đầu vào

N=11

Đầ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 squareSum (int n) nhận n và trả về số lượng các cặp có thứ tự với tổng các bình phương 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 <=sqrt (n) là căn bậc hai của n.

  • Tính bình phương của b dưới dạng n-pow (a, 2).

  • Tính b dưới dạng sqrt (bsquare)

  • Nếu pow (b, 2) ==bsquare. 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 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;
}

Đầ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^2+b^2=N: 122