मान लें कि हमारे पास एक गैर-ऋणात्मक पूर्णांक c है, हमें यह तय करना होगा कि क्या दो पूर्णांक a और b हैं, जो कि a^2 + b^2 =c को संतुष्ट करते हैं।पी>
इसलिए, अगर इनपुट 61 जैसा है, तो आउटपुट ट्रू होगा, जैसे 61 =5^2 + 6^2।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को परिभाषित करें isPerfect(), इसमें x लगेगा,
-
sr :=x का वर्गमूल
-
सही लौटें जब (एसआर - एसआर का तल) 0 हो
-
मुख्य विधि से निम्न कार्य करें,
-
यदि c, 0 के समान है, तो -
-
सही लौटें
-
-
इनिशियलाइज़ i :=0 के लिए, जब 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