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

C++에서 제곱합이 N(a^2 + b^2 =N)인 카운트 쌍(a, b)

<시간/>

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