हमें N तत्वों की एक सरणी दी गई है। लक्ष्य सभी युग्मों की संख्या ज्ञात करना है (Arr[i],Arr[j]) जिनके पास एक योग है जो एक पूर्ण वर्ग है जैसे कि i!=j। यानी Arr[i]+Arr[j] एक पूर्ण वर्ग है।
हम जोड़ियों के योग की गणना करके ऐसा करेंगे और जांचेंगे कि क्या उस योग का वर्गमूल वर्गमूल के न्यूनतम मान के बराबर है। sqrt(Arr[i]+Arr[j])-floor( sqrt(Arr[i]+Arr[j] )==0.
आइए उदाहरणों से समझते हैं।
इनपुट - अर []={ 4,3,2,1,2,4 } एन=6
आउटपुट − योग के साथ पूर्ण वर्ग के रूप में जोड़े की संख्या − 2
स्पष्टीकरण -
Arr[1]+Arr[3]=4, sqrt(4)-floor(4)=0 4 is a perfect square. Arr[2]+Arr[4]=4, sqrt(4)-floor(4)=0 4 is a perfect square. Rest all pairs have sum 7,6,5,8 which are not perfect squares.
इनपुट - अरे []={ 3,3,3,3,3} एन=5
आउटपुट − योग के साथ पूर्ण वर्ग के रूप में जोड़े की संख्या − 0
स्पष्टीकरण − सभी युग्मों का योग =6 होता है, जो एक पूर्ण वर्ग नहीं है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम एक पूर्णांक सरणी लेते हैं Arr[] दस्ताने के आकार के लिए यादृच्छिक संख्याओं के साथ प्रारंभ किया गया> 0.
-
एक वैरिएबल n लें जो Arr[] की लंबाई को स्टोर करता है।
-
फ़ंक्शन countPairs(int arr[], int n) एक सरणी लेता है, इसकी लंबाई इनपुट के रूप में और उन जोड़ों को लौटाता है जिनमें योग होता है जो एक पूर्ण वर्ग होता है।
-
जोड़ी के प्रत्येक तत्व के लिए लूप के लिए दो का उपयोग करके ट्रैवर्स सरणी।
-
0<=i
-
गिरफ्तारी के योग की गणना करें [i], गिरफ्तारी [j] सकारात्मक हैं।
-
योग के वर्गमूल को sqrt(sum) के रूप में परिकलित करें।
-
अब जांचें कि क्या sqr-floor(sqr)==0. यानी योग एक पूर्ण वर्ग है। अगर सही वेतन वृद्धि गिनती है।
-
सभी लूपों के अंत में गिनती में जोड़े की कुल संख्या होगी जिनका योग पूर्ण वर्ग है।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> #include <math.h> using namespace std; int countPairs(int arr[], int n){ int count=0; int sum=0; double sqr=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ sum=arr[i]+arr[j]; sqr=sqrt(sum); if( sqr-floor(sqr)==0 ){ count++; //cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print } } } return count; } int main(){ int arr[] = { 1, 2, 4, 8, 5, 6 }; // Size of arr[] int n = sizeof(arr) / sizeof(int); cout <<endl<<"Pairs whose sum is perfect square :"<<countPairs(arr, n); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Pairs whose sum is perfect square :2