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

C++ का उपयोग करके उन क्वाड्रपल्स की संख्या ज्ञात करें जहां पहले तीन पद AP में और अंतिम तीन GP में हैं


इस लेख में, हम उन क्वाड्रपल्स की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण का वर्णन करेंगे जिनमें पहले 3 पद A.P. में हैं, और अंतिम 3 G.P. में हैं। पहले, हम अंकगणितीय प्रगति (A.P.) और ज्यामितीय प्रगति (G.P.) की बुनियादी परिभाषा समझाएंगे।

अंकगणितीय प्रगति (A.P.) - यह संख्याओं का एक क्रम है जिसमें सामान्य अंतर (d) समान या स्थिर होता है अर्थात दो लगातार संख्याओं का अंतर स्थिर होता है। उदाहरण के लिए: 1,3,5,7,9 | d = 2

ज्यामितीय प्रगति (G.P.) - यह संख्याओं का एक क्रम है जिसमें सामान्य अनुपात (r) समान होते हैं अर्थात हम प्रत्येक पद को पिछली संख्या को एक निश्चित संख्या से गुणा करके ढूंढ सकते हैं। उदाहरण के लिए: 3, 6, 12, 24,.... | r = 2

इस समस्या में, हमें यह निर्धारित करना है कि N पूर्णांकों की एक सरणी arr[] से कितने इंडेक्स क्वाड्रपल (a, b, c, d) हैं। नतीजतन, arr[a], arr[b], और arr[c] A.P. में हैं, और arr[d], arr[c] और arr[b] G.P. में हैं जहां सभी क्वाड्रपल्स निश्चित होने चाहिए। तो यहाँ उदाहरण है:

Input : arr[ ] = { 9, 6, 4, 2, 1, 2 } Output : 2 Explanation: क्वाड्रपल्स में तत्व { 3, 2, 1, 0 } और { 5, 2, 1, 0 } इंडेक्स पर हैं जहां क्वाड्रपल्स दोनों स्थितियों के लिए { 2, 4, 6, 9 } हैं। Input : arr[ ] = { 2, 6, 1, 4, 2 } Output : 2 Explanation: क्वाड्रपल्स में तत्व { 1, 3, 0, 2 } और { 1, 3, 4, 2 } इंडेक्स पर हैं जहां क्वाड्रपल्स दोनों स्थितियों के लिए { 6, 4, 2, 1 } हैं।

समाधान खोजने का दृष्टिकोण

अब, हम समाधान खोजने के लिए दो अलग-अलग दृष्टिकोणों का वर्णन करेंगे:

ब्रूट फोर्स दृष्टिकोण

यह चार नेस्टेड लूप का उपयोग करके इस समस्या को हल करने का एक सरल दृष्टिकोण है, फिर जांचें कि क्या पहले तीन तत्व A.P. में हैं। यदि हाँ, तो जांचें कि अंतिम 3 तत्व G.P. में हैं या नहीं। यदि हाँ, तो काउंट चर को 1 से बढ़ाएं। हालांकि, यह दृष्टिकोण समय लेने वाला है क्योंकि इसकी समय जटिलता O(n⁴) है।

कुशल दृष्टिकोण

इस दृष्टिकोण में, हम पहले हर सरणी तत्व की गिनती ढूंढते हैं, फिर दोनों तत्वों को दूसरा और तीसरा नंबर मानकर दो नेस्टेड लूप चलाते हैं, फिर पहला तत्व arr[b] - (arr[c] - arr[b]) होगा और चौथा तत्व arr[c] * arr[c] / arr[b] होगा।

उदाहरण

#include <bits/stdc++.h> using namespace std; int main (){     unordered_map < int, int > map;     int arr[] = { 2, 6, 1, 4, 2 };     int size = sizeof (arr) / sizeof (arr[0]);     // हर तत्व को प्रोसेस करना और गिनती बढ़ाना     for (int a = 0; a < size; a++)       map[arr[a]]++;     int count = 0;     // दूसरे और तीसरे तत्व के लिए दो नेस्टेड लूप चलाना     for (int b = 0; b < size; b++){         for (int c = 0; c < size; c++){             if (b == c)                 continue;                 // गिनती घटाना                 map[arr[b]]--;             map[arr[c]]--;             // सामान्य अंतर का उपयोग करके पहला तत्व ढूंढना             int first = arr[b] - (arr[c] - arr[b]);             // GP का उपयोग करके चौथा तत्व ढूंढना             int fourth = (arr[c] * arr[c]) / arr[b];             if ((arr[c] * arr[c]) % arr[b] == 0){                 // यदि बराबर नहीं तो काउंट बढ़ाएं                 if (arr[b] != arr[c])                     count += map[first] * map[fourth];                 else                   count += map[first] * (map[fourth] - 1);             }             map[arr[b]]++;             map[arr[c]]++;         }     }     cout <<"क्वाड्रपल्स की संख्या: " << count;     return 0; }

आउटपुट

क्वाड्रपल्स की संख्या: 2

उपरोक्त कोड की व्याख्या

इस कोड में हम कॉम्बिनेटोरिक्स का उपयोग कर रहे हैं और दूसरे और तीसरे तत्व के लिए दो नेस्टेड लूप का उपयोग कर रहे हैं और पहले तत्व को arr[a] - (arr[c] - arr[b]) और चौथे तत्व को arr[c] * arr[c] / arr[b] से ढूंढ रहे हैं। इसलिए A और B इंडेक्स द्वारा क्वाड्रपल्स की संख्या पहले नंबर की गिनती * चौथे नंबर की गिनती है, दूसरे और तीसरे तत्व को स्थिर रखते हुए। यहां उपरोक्त कोड की समय जटिलता O(n²) है।

निष्कर्ष

इस लेख में, हम उन क्वाड्रपल्स की संख्या ज्ञात करने की समस्या को हल करते हैं जहां पहले तीन पद AP में हैं, और अंतिम तीन पद GP में हैं, और हमने इसे हल करने के लिए दो दृष्टिकोणों पर चर्चा की: ब्रूटफोर्स [O(n⁴)] और कुशल दृष्टिकोण [O(n²)]।

हमने इस समस्या को C++ का उपयोग करके हल किया, और यह समस्या Java, Python, C, या किसी अन्य प्रोग्रामिंग भाषा में हल की जा सकती है।


  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें

    बिंदु X और Y के बीच n संख्या में इंटरमीडिएट ट्रेन स्टेशन हैं। उन विभिन्न तरीकों की गणना करें जिनसे ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई दो स्टेशन एक-दूसरे के बगल में न हों। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण की व्य

  1. C++ का उपयोग करके फुटबॉल पर पेंटागन और हेक्सागन की संख्या ज्ञात करें C++ का उपयोग करके फुटबॉल पर पेंटागन और हेक्सागन की संख्या ज्ञात करें

    जैसा कि हम सभी जानते हैं, पेंटागन और हेक्सागन फुटबॉल के समान रूप से आवश्यक भाग हैं। ये आकृतियाँ एक पहेली की तरह एक साथ फिट होती हैं ताकि एक पूरी तरह से गोलाकार आकार बनाया जा सके। तो यहाँ हमारे पास एक फुटबॉल है, जिसमें हमें हेक्सागन और पेंटागन ढूंढने हैं।हम समस्या को आसानी से हल करने के लिए यूलर विशे