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

C++의 제곱수의 합


음이 아닌 정수 c가 있다고 가정하면 a^2 + b^2 =c를 충족하는 두 개의 정수와 b가 있는지 결정해야 합니다.

따라서 입력이 61과 같으면 출력은 61 =5^2 + 6^2와 같이 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • isPerfect() 함수를 정의하면 x가 필요합니다.

  • sr :=x의 제곱근

  • (sr - floor of sr)이 0일 때 true를 반환

  • 기본 방법에서 다음을 수행합니다.

  • c가 0과 같으면 -

    • true를 반환

  • for initialize i :=0, i

    • b :=c - 나는 * 나는

    • isPerfect(b)가 참이면 -

      • true를 반환

  • 거짓을 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool isPerfect(int x){
      long double sr = sqrt(x);
      return ((sr - floor(sr)) == 0);
   }
   bool judgeSquareSum(int c) {
      if (c == 0)
         return true;
      int b;
      for (int i = 0; i < ceil(sqrt(c)); i++) {
         b = c - i * i;
         if (isPerfect(b))
            return true;
      }
      return false;
   }
};
main(){
   Solution ob;
   cout << (ob.judgeSquareSum(61));
}

입력

61

출력

1