हमें संख्याओं की एक सरणी Arr[] दी गई है। लक्ष्य उन ट्रिपलेट्स की संख्या गिनना है जिनका गुणनफल दी गई संख्या p के बराबर है। एक से अधिक ट्रिपलेट्स हो सकते हैं जिनके मान समान हैं लेकिन तत्व अलग हैं। उदाहरण के लिए, सरणी [1,2,3,1,2] में (1,2,3) और (3,1,2) को अलग गिना जाएगा यदि तत्व अलग हैं लेकिन मान समान हैं।
आइए उदाहरणों से समझते हैं।
इनपुट - arr[]= { 1,2,3,2,4,1,5 }, p=4
आउटपुट - ट्रिपलेट्स की संख्या: 3
व्याख्या -
ट्रिप्लेट 1[ 1,2,3,2,4,1,5 ] → (1,2,2) गुणनफल=4 ट्रिप्लेट 2 [ 1,2,3,2,4,1,5 ] → (1,4,1) गुणनफल=4 ट्रिप्लेट 3 [ 1,2,3,2,4,1,5 ] → (2,2,1) गुणनफल=4 गुणनफल 4 वाले ट्रिपलेट्स की संख्या 3 है।
इनपुट - arr[]= { 1,1,2,1,2,2 }, p=8
आउटपुट - ट्रिपलेट्स की संख्या: 1
व्याख्या -
ट्रिप्लेट 1 [ 1,1,2,1,2,2 ] → (2,2,2) गुणनफल=8 गुणनफल 8 वाले ट्रिपलेट्स की संख्या 1 है
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम यादृच्छिक संख्याओं से आरंभ एक पूर्णांक सरणी Arr[] लेते हैं।
एक वेरिएबल product लेते हैं जो गुणनफल मान स्टोर करता है। N Arr[] की लंबाई स्टोर करता है।
फंक्शन countTriplets(int arr[],int n,int p) एक सरणी, उसकी लंबाई और गुणनफल को इनपुट के रूप में लेता है और उन ट्रिपलेट्स को लौटाता है जिनका गुणनफल p के बराबर है।
ट्रिपलेट्स की संख्या के लिए प्रारंभिक वेरिएबल count को 0 के रूप में लेते हैं।
प्रत्येक ट्रिप्लेट के गुणनफल के लिए प्रारंभिक वेरिएबल prod को 1 के रूप में लेते हैं।
प्रत्येक ट्रिप्लेट के तत्व के लिए तीन फॉर लूप का उपयोग करके सरणी को पार करते हैं।
बाहरी लूप 0<=i
prod=arr[i]*arr[j]*arr[k] की गणना करते हैं। यदि prod==p तो काउंट बढ़ाते हैं।
सभी लूप के अंत में काउंट में शर्त पूरी करने वाले ट्रिपलेट्स की कुल संख्या होगी।
काउंट को वांछित परिणाम के रूप में लौटाते हैं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int countTriplets(int arr[],int n,int p){ int count = 0; int prod=1; for (int i = 0; i < n-2; i++){ for (int j = i+1; j < n-1; j++){ for (int k = j+1; k < n; k++){ prod=arr[i]*arr[j]*arr[k]; if ( prod==p ){ count++; // cout<<endl<<"a :"< आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
ट्रिपलेट्स की संख्या: 18.