हमें N तत्वों की एक सरणी दी गई है। लक्ष्य उन सभी युग्मों (Arr[i], Arr[j]) की गिनती ढूंढना है जिनका योग एक पूर्ण वर्ग है जैसे कि i!=j। यानी Arr[i]+Arr[j] एक पूर्ण वर्ग है।
हम इसे युग्मों का योग निकालकर और जांच करके करेंगे कि उस योग का वर्गमूल उस वर्गमूल के फ्लोर मान के बराबर है या नहीं। sqrt(Arr[i]+Arr[j]) - floor(sqrt(Arr[i]+Arr[j])) == 0।
आइए उदाहरणों से समझते हैं।
इनपुट - Arr[]= { 4,3,2,1,2,4 } N=6
आउटपुट - पूर्ण वर्ग योग वाले युग्मों की संख्या: 2
व्याख्या -
Arr[1]+Arr[3]=4, sqrt(4)-floor(4)=0, 4 एक पूर्ण वर्ग है। Arr[2]+Arr[4]=4, sqrt(4)-floor(4)=0, 4 एक पूर्ण वर्ग है। बाकी सभी युग्मों का योग 7,6,5,8 है जो पूर्ण वर्ग नहीं हैं।
इनपुट - Arr[]= { 3,3,3,3,3} N=5
आउटपुट - पूर्ण वर्ग योग वाले युग्मों की संख्या: 0
व्याख्या - सभी युग्मों का योग=6 है, जो पूर्ण वर्ग नहीं है।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम यादृच्छिक संख्याओं से आरंभ एक पूर्णांक सरणी Arr[] लेते हैं।
एक वेरिएबल n लेते हैं जो Arr[] की लंबाई स्टोर करता है।
फंक्शन countPairs(int arr[], int n) एक सरणी, उसकी लंबाई को इनपुट के रूप में लेता है और उन युग्मों को लौटाता है जिनका योग एक पूर्ण वर्ग है।
प्रत्येक युग्म के तत्व के लिए दो फॉर लूप का उपयोग करके सरणी को पार करते हैं।
बाहरी लूप 0<=i
arr[i], arr[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 prod=0; for(int i=0;i आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
गुणनफल 2 की घात वाले युग्म: 6