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

C++ में सरणी में उन जोड़ों (x, y) की संख्या ज्ञात करें जहाँ x^y > y^x


मान लीजिए हमारे पास धनात्मक पूर्णांकों के दो सरणी X और Y हैं। उन जोड़ों की संख्या ज्ञात करें जहाँ x^y > y^x, जहाँ x, X का एक तत्व है और y, Y का एक तत्व है। मान लीजिए X = [2, 1, 6], और Y = [1, 5], तो आउटपुट 3 होगा। ऐसे तीन जोड़े हैं: (2, 1), (2, 5) और (6, 1)।

हम इसे एक कुशल तरीके से हल कर सकते हैं। तर्क सरल है: जब y > x हो तो x^y > y^x कुछ अपवादों के साथ। यही तरकीब है।

  • सरणी Y को सॉर्ट करें

  • X के प्रत्येक तत्व x के लिए, हमें Y में उस सबसे छोटी संख्या का सूचकांक ढूंढना होगा जो x से बड़ी है। इसके लिए हम बाइनरी सर्च का उपयोग करेंगे। वैकल्पिक रूप से हम upper_bound() फ़ंक्शन का भी उपयोग कर सकते हैं।

  • पाए गए सूचकांक के बाद की सभी संख्याएं संबंध को संतुष्ट करती हैं, इसलिए उन्हें गिनती में जोड़ दें।

उदाहरण

#include <iostream> #include <algorithm> using namespace std; int count(int x, int Y[], int n, int no_of_y[]) {     if (x == 0)         return 0;     if (x == 1)         return no_of_y[0];     int* index = upper_bound(Y, Y + n, x);     int ans = (Y + n) - index;     ans += (no_of_y[0] + no_of_y[1]);     if (x == 2)         ans -= (no_of_y[3] + no_of_y[4]);     if (x == 3)         ans += no_of_y[2];     return ans; } int howManyPairs(int X[], int Y[], int m, int n) {     int no_of_y[5] = {0};     for (int i = 0; i < n; i++)         if (Y[i] < 5)             no_of_y[Y[i]]++;     sort(Y, Y + n);     int total_pairs = 0;     for (int i=0; i< m; i++)         total_pairs += count(X[i], Y, n, no_of_y);     return total_pairs; } int main() {     int X[] = {2, 1, 6};     int Y[] = {1, 5};     int m = sizeof(X)/sizeof(X[0]);     int n = sizeof(Y)/sizeof(Y[0]);     cout << "Total pair count: " << howManyPairs(X, Y, m, n); }

आउटपुट

Total pair count: 3

  1. - C++ में लंबाई L की स्ट्रिंग के जादुई जोड़ों की संख्या ढूंढना

    मान लीजिए हमारे पास दो स्ट्रिंग्स str1 और str2 हैं, हमें लंबाई L के जादुई जोड़ों की संख्या ढूंढनी है। दो स्ट्रिंग्स जादुई होंगी यदि प्रत्येक इंडेक्स i के लिए, str1[i] < str2[i] हो। हमें जोड़ों की संख्या गिननी है चूंकि संख्या बहुत बड़ी है, तो उत्तर को मॉड्यूलो 10⁹ का उपयोग करके लौटाएं। स्ट्रिंग्स केव

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिससे सभी तत्व विभाज्य हों

    मान लीजिए हमारे पास कुछ तत्वों के साथ एक सरणी A है। हमें A से एक ऐसा तत्व ढूंढना है जिससे सभी तत्व इससे विभाज्य हों। मान लीजिए A = [15, 21, 69, 33, 3, 72, 81] है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हैं। इस समस्या को हल करने के लिए, हम A में सबसे छोटी संख्या लेंगे, फिर जांचेंगे कि क्य

  1. - C++ में सरणी में उन सभी जोड़े (a, b) को खोजें जैसे कि a % b = k

    मान लीजिए हमारे पास एक सरणी A है, उस सरणी से हमें सभी जोड़े (a, b) प्राप्त करने हैं जैसे कि a%b = k। मान लीजिए सरणी A = [2, 3, 4, 5, 7], और k = 3, तो जोड़े हैं (7, 4), (3, 4), (3, 5), (3, 7)। इसे हल करने के लिए, हम सूची को पार करेंगे और जांचेंगे कि दी गई शर्त पूरी हो रही है या नहीं। उदाहरण #include