Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

एक सरणी में जोड़े की संख्या जिसका योग C++ में एक पूर्ण वर्ग है


हमें 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

  1. एक बाइनरी ट्री में जोड़े की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

    हमें एक पूर्णांक मान और एक चर x दिया गया है और कार्य बाइनरी ट्री का निर्माण करना है और दिए गए मान x के बराबर योग वाले जोड़े ढूंढना है। उदाहरण के लिए इनपुट int x =5, मान डालने के बाद जो ट्री बनाया जाएगा वह नीचे दिया गया है - आउटपुट Count of pairs in a binary tree whose sum is equal to a given va

  1. उन नोड्स की गणना करें जिनका वजन C++ में एक पूर्ण वर्ग है

    एक बाइनरी ट्री को देखते हुए इसके नोड्स के वजन के साथ। लक्ष्य उन नोड्स की संख्या का पता लगाना है जिनका वजन इस तरह है कि संख्या एक पूर्ण वर्ग है। अगर वजन 36 है तो यह 62 है इसलिए इस नोड को गिना जाएगा। उदाहरण के लिए इनपुट मान डालने के बाद जो ट्री बनाया जाएगा वह नीचे दिया गया है - आउटपुट Count the n

  1. दो बीएसटी से जोड़े की गणना करें जिनकी राशि सी ++ में दिए गए मान x के बराबर है

    हमें इनपुट के रूप में दो बाइनरी सर्च ट्री और एक वेरिएबल x दिया गया है। लक्ष्य प्रत्येक पेड़ से नोड्स के जोड़े को ढूंढना है ताकि नोड्स के मूल्य का योग x के बराबर हो। BST_1 से नोड 1 और BST_2 से नोड 2 लें और दोनों का डेटा भाग जोड़ें। यदि योग =x. वेतन वृद्धि की संख्या। आइए उदाहरणों से समझते हैं। इनपुट