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

अनियंत्रित जोड़े (i, j) की गणना करें जैसे कि a[i] और a[j] का उत्पाद 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[] यादृच्छिक संख्याओं के साथ आरंभ किया गया।

  • एक वैरिएबल 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 prod=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         prod=arr[i]*arr[j];
         if( ceil(log2(prod))==floor(log2(prod)) ){
            count++;
            //cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print
         }
      }
   }  
   return count;
}
int main(){
   int arr[] = { 2, 5, 8, 16, 128 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<endl<<"Pairs whose product is power of 2:"<<countPairs(arr, n);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Pairs whose product is power of 2:6

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

    हमें N तत्वों की एक सरणी दी गई है। लक्ष्य सभी युग्मों की संख्या ज्ञात करना है (Arr[i],Arr[j]) जिनके पास एक योग है जो एक पूर्ण वर्ग है जैसे कि i!=j। यानी Arr[i]+Arr[j] एक पूर्ण वर्ग है। हम जोड़ियों के योग की गणना करके ऐसा करेंगे और जांचेंगे कि क्या उस योग का वर्गमूल वर्गमूल के न्यूनतम मान के बराबर ह

  1. ट्रिपलेट्स की संख्या की गणना करें (ए, बी, सी) जैसे कि ए^2 + बी^2 =सी^2 और 1<=a<=b<=c<=n C++ में

    हमें एक पूर्णांक n दिया गया है। लक्ष्य त्रिक (3 संख्याओं का सेट) को खोजना है जो शर्तों को पूरा करते हैं - ए2 +बी2 =c2 1<=a<=b<=c<=n हम 1<=a<=n और 1<=b<=n के मानों के लिए दो लूप चलाकर ऐसा करेंगे। तदनुसार c की गणना करें (c=sqrt(a2+b2 )) और अगर 1 और 2 दोनों शर्तें पूरी होती हैं तो वेतन वृद्धि

  1. C++ में i <j <k और a[i] <a[j] <a[k] की तुलना में किसी सरणी में त्रिक का अधिकतम योग ज्ञात करें

    अवधारणा आकार n के धनात्मक पूर्णांकों के दिए गए सरणी के संबंध में, ट्रिपलेट का अधिकतम योग निर्धारित करने का हमारा कार्य ( ai + एजे + एके ) जैसे कि 0 <=i