इस लेख में, हम एक समीकरण को संतुष्ट करने वाले कई सेक्सटुपलेट्स को खोजने के लिए एक दृष्टिकोण का वर्णन करेंगे। इसलिए हम एक उदाहरण के रूप में एक समीकरण ले रहे हैं जहाँ हमें a, b, c, d, e, और f के मानों को खोजने की आवश्यकता है जो नीचे दिए गए समीकरण को संतुष्ट करते हैं।
( a + b + c ) * e / d = f
आइए समीकरण को फिर से क्रमित करें -
( a + b + c ) = ( f * d ) / e
यहाँ दी गई समस्या के लिए एक सरल उदाहरण है -
Input : arr [ ] = { 1, 3 } Output : 4 Explanation : ( a, b, c, e, f ) = 1, d = 3 ( a, b, c, d, e ) = 1, f = 3 ( a, b, c ) = 1, ( d, e, f ) = 3 ( a, b, c, d, f ) = 3, ( e ) = 1 Input : arr [ ] = { 2, 5 } Output : 3
समाधान खोजने के लिए दृष्टिकोण
दी गई समस्या का समाधान खोजने के लिए हम एक Naive दृष्टिकोण का उपयोग करेंगे।
निष्पक्ष दृष्टिकोण
इस समस्या में, एलएचएस और आरएचएस को देखते हुए, हम एलएचएस के सभी संभावित परिणाम पा सकते हैं और एक सरणी में संग्रहीत कर सकते हैं, इसी तरह आरएचएस के लिए एक सरणी बना सकते हैं और इसे आरएचएस के सभी संभावित परिणामों से भर सकते हैं।
एक ही मान के लिए दोनों सरणियों की जाँच करना और पाए गए प्रत्येक मान के लिए गिनती बढ़ाना, और अंत में परिणाम दिखाना।
उदाहरण
#include<bits/stdc++.h> using namespace std; int findsamenumbers(int *arr1, int *arr2, int n){ int i = 0, j = 0, k = 0, count=0; while(( i < n*n*n+1) && (j < n*n*n+1)){ if(arr1[i] < arr2[j]) i++; else if(arr1[i] == arr2[j]){ count++; int temp = arr1[i]; while(temp==arr1[++i]){ count++; } while(temp==arr2[++j]){ count++; } } else j++; } return count; } int main(){ int arr[] = {2,5}; int n = sizeof(arr)/sizeof(arr[0]); // Generating all possible values of LHS array int index = 0,i; int LHS[n*n*n ]; for ( i = 0; i < n; i++){ for (int j = 0; j < n; j++){ for(int k = 0; k < n; k++){ LHS[index++] = (arr[i] * arr[j]) / arr[k]; } } } // Generating all possible value of RHS array int RHS[n*n*n ]; index=0; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ for (int k = 0; k < n; k++){ RHS[index++] = (arr[i] + arr[j] + arr[k]); } } } sort(RHS, RHS + (n*n*n)); sort(LHS, LHS + (n*n*n)); int result = findsamenumbers(LHS, RHS, n); cout<<"Number of sextuplets that satisfy an equation: "<<result; return 0; }
आउटपुट
Number of sextuplets that satisfy an equation: 3
उपरोक्त कार्यक्रम की व्याख्या
इस कार्यक्रम में, हम एलएचएस और आरएचएस के प्रत्येक परिणाम को रखने के लिए दो सरणियाँ बना रहे हैं। हम एलएचएस में (ए, बी, सी) और आरएचएस में (डी, ई, एफ) के हर संभावित मूल्य को रखने के लिए तीन नेस्टेड लूप का उपयोग कर रहे हैं। उसके बाद, हम दोनों सरणियों की तुलना करने के लिए दोनों सरणियों को छाँट रहे हैं और दोनों सरणियों में समान मान पाते हैं, दोनों सरणियों को findsamenumber() फ़ंक्शन में पास करते हैं।
findsamenumber() फ़ंक्शन में, हम दो नेस्टेड लूप का उपयोग करके समान मानों की जांच करते हैं। जब हमें दो तत्व समान मिलते हैं, तो हम दोनों सरणियों में उस संख्या की आवृत्ति की जांच करते हैं ताकि हर संभव मान गिना जा सके।
if(arr1[i] == arr2[j]){ count++; int temp = arr1[i]; while(temp==arr1[++i]){ count++; } while(temp==arr2[++j]){ count++; }
निष्कर्ष
इस लेख में, हमने दिए गए सरणी में एक समीकरण को संतुष्ट करने वाले सेक्सटुपलेट्स की संख्या को हल किया है। हमने 6 चर समीकरण (a + b + c) * e / d =f में चरों का हर संभव मान पाया। हम इस समस्या को किसी अन्य प्रोग्रामिंग भाषा जैसे सी, जावा और पायथन में हल कर सकते हैं।