Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng hai số bình phương trong C++


Mô tả bài toán

Cho số nguyên không âm c. Kiểm tra có tồn tại 2 số nguyên a, b sao cho a² + b² = c không.

Ví dụ: 61 = 5² + 6² → True.

Giải pháp (Kiểm tra số chính phương)

  • Duyệt i từ 0 đến √c.
  • Tính b = c - i².
  • Kiểm tra b có phải số chính phương không (căn bậc 2 nguyên).
  • Nếu có → true.

Ví dụ minh họa

#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;
        for (int i = 0; i < ceil(sqrt(c)); i++) {
            int b = c - i * i;
            if (isPerfect(b)) return true;
        }
        return false;
    }
};

int main() {
    Solution ob;
    cout << ob.judgeSquareSum(61);
    return 0;
}

Đầu vào

61

Đầu ra

1