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

C++ में दी गई रेंज में सम या विषम संख्या की प्रायिकता पर क्वेरीज़


संख्याओं की समता, यानी यह सम है या विषम, और दी गई रेंज के लिए प्रायिकता खोजने के लिए। प्रत्येक क्वेरी के लिए, हमें p और q प्रिंट करने होंगे जो प्रायिकता को p / q से दर्शाते हैं, उदाहरण के लिए।

इनपुट: N = 5, arr[] = { 6, 5, 2, 1, 7 } क्वेरी 1: 0 2 2 क्वेरी 2: 1 2 5 क्वेरी 3: 0 1 4 आउटपुट: 0 3 4 1 2

इस समस्या में, हम दो सरणियों को बनाए रखेंगे जिनमें उस इंडेक्स तक मौजूद विषम और सम संख्याओं की संख्या होगी। यह हमारी समस्या को सरल बनाता है, और अब हमें उस रेंज में मौजूद तत्वों की संख्या और उनकी गिनती प्रिंट करनी होगी।

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

इस दृष्टिकोण में, हम दो सरणियों को बनाए रखते हैं। वे ith इंडेक्स तक पाए गए सम और विषम संख्याओं की संख्या रखते हैं और इस समस्या को प्रीफिक्स योग समस्याओं की तरह हल करते हैं।

उदाहरण

 #include <bits/stdc++.h> using namespace std; void solve(int arr[], int n, int Q,int query[][3]){     int even[n + 1]; // ith इंडेक्स तक मिली सम संख्याओं की गिनती के लिए हमारी सरणी     int odd[n + 1]; // ith इंडेक्स तक मिली विषम संख्याओं की गिनती के लिए हमारी सरणी     even[0] = 0; odd[0] = 0; // चूंकि हम 1 आधारित इंडेक्सिंग कर रहे हैं इसलिए हम दोनों सरणियों के 0th इंडेक्स को 0 सेट करते हैं     for (int i = 0; i < n; i++) {         if (arr[i] & 1) { // यदि हमें विषम संख्या मिलती है तो हम odd बढ़ाते हैं             odd[i + 1] = odd[i] + 1;             even[i + 1] = even[i];         }         else { // अन्यथा हम even बढ़ाते हैं             even[i + 1] = even[i] + 1;             odd[i + 1] = odd[i];         }     }     for (int i = 0; i < Q; i++) { // क्वेरीज़ को पार करना         int r = query[i][2]; // राइट रेंज         int l = query[i][1]; // लेफ्ट रेंज         int k = query[i][0]; // क्वेरी का प्रकार         int q = r - l + 1; // दी गई रेंज में तत्वों की संख्या         int p;         if (k) // k क्वेरी का प्रकार है और हम दी गई रेंज में समान समता वाले तत्वों की संख्या खोज रहे हैं             p = odd[r] - odd[l - 1];         else             p = even[r] - even[l - 1];         if (!p) // यदि p शून्य है तो हम बस 0 प्रिंट करते हैं             cout << "0\n";         else if (p == q) // यदि p == q तो हम 1 प्रिंट करते हैं             cout << "1\n";         else {             int g = __gcd(p, q);             cout << p / g << " " << q / g << "\n"; // चूंकि p और q का कोई सामान्य gcd नहीं होना चाहिए इसलिए हम gcd से विभाजित करते हैं         }     } } int main(){     int arr[] = { 6, 5, 2, 1, 7 }; // दी गई सरणी     int n = sizeof(arr) / sizeof(int); // हमारी सरणी का आकार     int Q = 2; // हमारी क्वेरीज़ की संख्या     int query[Q][3] = {{ 0, 2, 2 },{ 1, 2, 5 }}; // दी गई क्वेरीज़     solve(arr, n, Q, query);     return 0; }

आउटपुट

0 3 4

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

उपरोक्त दृष्टिकोण में, हम दो सरणियों को बनाए रखकर ith इंडेक्स तक मिली सम और विषम संख्याओं की गिनती करते हैं। अब हमें दी गई रेंज में मौजूद सम या विषम संख्याओं की संख्या निकालनी है और वह संख्या और उस रेंज में मौजूद कुल तत्वों की संख्या प्रिंट करनी है।

निष्कर्ष

इस ट्यूटोरियल में, हमने दी गई रेंज में सम या विषम संख्याओं की प्रायिकता पर क्वेरीज़ को हल किया। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा दृष्टिकोण (सामान्य) भी सीखा जिससे हमने इस समस्या को हल किया। हम यही प्रोग्राम C, Java, Python आदि अन्य भाषाओं में भी लिख सकते हैं। आशा है आपको यह ट्यूटोरियल उपयोगी लगा होगा।

  1. - C++ में जांचें कि संख्या दिए गए बेस में है या नहीं

    मान लीजिए, हमारे पास एक संख्या स्ट्रिंग है, हमें पता लगाना है कि संख्या दिए गए बेस B की है या नहीं? यदि स्ट्रिंग 101110 है, b = 2, तो प्रोग्राम true लौटाएगा। यदि स्ट्रिंग A8F है, बेस 16 है, तो यह सत्य होगा।दृष्टिकोण बहुत सरल है। यदि सभी वर्ण दिए गए बेस के प्रतीकों की सीमा में हैं, तो सत्य लौटाएं, अन

  1. - C++ प्रोग्राम: सशर्त स्टेटमेंट का उपयोग किए बिना "सम" या "विषम" प्रिंट करना

    इस खंड में हम देखेंगे कि किसी भी प्रकार के सशर्त स्टेटमेंट (<, <=, !=, >, >=, ==) का उपयोग किए बिना किसी संख्या की विषम या सम जांच कैसे करें। हम सशर्त स्टेटमेंट का उपयोग करके आसानी से विषम या सम की जांच कर सकते हैं। हम संख्या को 2 से विभाजित कर सकते हैं, फिर जांच सकते हैं कि शेष 0 है या

  1. - C++ प्रोग्राम: जांचें कि संख्या सम (Even) है या विषम (Odd)

    परिचयएक संख्या सम होती है यदि यह दो से विभाज्य होती है और विषम होती है यदि यह दो से विभाज्य नहीं होती। कुछ सम संख्याएं हैं - 2, 4, 6, 8, 10, 12, 14, 16 कुछ विषम संख्याएं हैं - 1, 3, 5, 7, 9, 11, 13, 15, 17 मॉड्यूलस का उपयोग करके सम/विषम जांचेंउदाहरण#include <iostream> using namespace std; int