একটি নন-নেগেটিভ পূর্ণসংখ্যা c দেওয়া আছে। চেক করতে হবে দুটি পূর্ণসংখ্যা a এবং b আছে কিনা যাতে a² + b² = c সিদ্ধ হয়।
ইনপুট ৬১ হলে আউটপুট True, কারণ ৬১ = ৫² + ৬²।
সমাধানের ধাপসমূহ
- isPerfect() ফাংশন: x-এ পূর্নবর্গ কিনা চেক করুন (sqrt(x) - floor(sqrt(x)) == 0)
- যদি c == 0 হয়, true রিটার্ন করুন
- i := 0 থেকে ceil(sqrt(c)) পর্যন্ত:
- b := c - i*i
- যদি isPerfect(b) true হয়, true রিটার্ন করুন
- false রিটার্ন করুন
উদাহরণ
#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;
}
};
int main(){
Solution ob;
cout << (ob.judgeSquareSum(61));
}ইনপুট
61
আউটপুট
1