ধরুন আমাদের একটি অ-ঋণাত্মক পূর্ণসংখ্যা c আছে, আমাদেরকে সিদ্ধান্ত নিতে হবে যে দুটি পূর্ণসংখ্যা a এবং b আছে কিনা যাতে এটি a^2 + b^2 =c সন্তুষ্ট করে।পি>
সুতরাং, যদি ইনপুটটি 61 এর মত হয়, তাহলে আউটপুটটি True হবে, যেমন 61 =5^2 + 6^2।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন isPerfect() সংজ্ঞায়িত করুন, এটি x,
লাগবে -
sr :=x
এর বর্গমূল -
(sr - sr-এর ফ্লোর) 0
হলে true রিটার্ন করুন -
প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন,
-
যদি c 0 এর সমান হয়, তাহলে −
-
প্রত্যাবর্তন সত্য
-
-
আরম্ভ করার জন্য i :=0, যখন i
-
b :=c - i * i
-
যদি isPerfect(b) সত্য হয়, তাহলে -
-
প্রত্যাবর্তন সত্য
-
-
-
ফেরত মিথ্যা
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#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