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
itừ 0 đến√c. - Tính
b = c - i². - Kiểm tra
bcó 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