मान लें कि हमारे पास एक गैर-ऋणात्मक पूर्णांक 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