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

सी ++ में एक ही उत्पाद के साथ टुपल

मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है जिसमें अलग-अलग तत्व हैं। कार्य टुपल्स की कुल संख्या को गिनना है जैसे कि उन सभी में एक ही उत्पाद हो।

यदि टपल (a,b,c,d) है, तो यह मान्य होगा यदि यह टपल अनुसरण करता है (a*b =c*d)। उदाहरण के लिए,

इनपुट-1 :

arr[]= {2,4,6,3}

आउटपुट :

8

व्याख्या:टुपल्स की कुल संख्या 8 है और ये हैं, (2 6 3 4),(2,6,4,3),(6,2,3,4),(6,2,4,3),( 3,4,2,6),(4,3,2,6) ,(3,4,6,2), (4,3,6,2) जिसमें a*b =c*d.

इस समस्या को हल करने का तरीका -

इस समस्या को हल करने का विचार यह है कि हम जोड़े में सभी गुणा के लिए हैशमैप का उपयोग करेंगे।

इससे यह सुनिश्चित करने में मदद मिलेगी कि मानचित्र में संग्रहीत सभी युग्मों का गुणन समान है।

दिए गए सरणी में प्रत्येक तत्व के गुणन का नक्शा बनाने के बाद, हम नक्शे के माध्यम से जांच करेंगे कि कितने जोड़े ऐसे हैं जिनका गुणन (a*b =c*d) के रूप में है।

चूंकि जोड़े की कुल संख्या को n*(n-1)/2 के रूप में गिना जा सकता है और एक जोड़ी में '4' संख्याएं होती हैं जिनमें अधिकतम 4*2 ऐसे क्रमपरिवर्तन हो सकते हैं। इस प्रकार प्रत्येक तत्व के लिए, इसमें n*(n1)/2*8 जोड़े हो सकते हैं।

  • सरणी तत्वों का इनपुट लें।

  • एक पूर्णांक फ़ंक्शन countTuples(int *arr, int n) सरणी तत्व और उसके आकार को इनपुट के रूप में लेता है। और (a*b =c*d) के रूप में समान उत्पाद वाले टुपल्स की संख्या लौटाता है।

  • ऐसा हैशमैप बनाना कि कुंजी युग्म का गुणनफल हो और उन युग्मों की आवृत्ति के रूप में मान हो।

  • मानचित्र पर पुनरावृति करना और समान उत्पाद वाले ऐसे टुपल्स की संख्या गिनना।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int countTuple(int *arr, int n) {
   map<int, int> mp;
   for (int i = 0; i < n; i++)
      for (int j = i + 1; j < n; j++)
         mp[arr[i] * arr[j]]++;
   int ans = 0;
   for (auto it : mp)
      ans += (it.second * (it.second - 1) / 2) * 8;
   return ans;
}
int main(){
   int n=4;
   int arr[n]= {2,4,6,3};
   int res= countTuple(arr,n);
   cout<<res<<" ";
   return 0;
}

आउटपुट

8

एक ही उत्पाद टुपल्स वाले सभी टुपल्स 8 हैं।


  1. C++ . में भूलभुलैया III

    मान लीजिए कि खाली जगह और दीवारों के साथ एक भूलभुलैया है और उस भूलभुलैया में एक गेंद भी है। गेंद ऊपर (यू), नीचे (डी), बाएं (एल) या दाएं (आर) दिशाओं को लुढ़क कर खाली जगहों से जा सकती है, लेकिन यह दीवार से टकराने तक लुढ़कती रहती है। जब गेंद रुकती है, तो वह अगली दिशा चुन सकती है। उस भूलभुलैया में एक छेद

  1. सी ++ में उत्पाद के बराबर एलसीएम के साथ अधिकतम लंबाई उपसरणी

    मान लीजिए कि हमारे पास एक सरणी A है। हमें उप-सरणी की अधिकतम लंबाई ज्ञात करनी है, जिसका LCM उस उप-सरणी के तत्वों के गुणनफल के समान है। यदि उस प्रकार का उप-सरणी नहीं मिलता है, तो -1 लौटाएं। मान लीजिए सरणी {6, 10, 21} है, तो लंबाई 2 है, क्योंकि उप-सरणी {10, 21} है, जिसका एलसीएम 210 है, और उत्पाद भी 210

  1. पायथन में एक ही उत्पाद के साथ टपल खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास अद्वितीय सकारात्मक मूल्यों के साथ एक सरणी संख्या है, हमें टुपल्स (ए, बी, सी, डी) की संख्या इस तरह से ढूंढनी है कि ए * बी =सी * डी जहां ए, बी, सी, और डी अंकों के तत्व हैं , और सभी तत्व a, b, c और d अलग हैं। इसलिए, यदि इनपुट nums =[2,3,4,6] जैसा है, तो आउटपुट 8 होगा क्योंकि हम