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

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

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

Input : N = 5, arr[] = { 6, 5, 2, 1, 7 }
query 1: 0 2 2
query 2: 1 2 5
query 3: 0 1 4

Output : 0
3 4
1 2

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

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

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void solve(int arr[], int n, int Q,int query[][3]){
    int even[n + 1]; // our array for counting the number of evens find till ith index
    int odd[n + 1]; // our array for counting the number of odds find till ith index
    even[0] = 0; odd[0] = 0; // as we are doing 1 based indexing so we just set 0th index of both arrays to 0
    for (int i = 0; i < n; i++) {
        if (arr[i] & 1) { // if we found odd number we increment odd
            odd[i + 1] = odd[i] + 1;
            even[i + 1] = even[i];
        }
        else { // else we increment even
            even[i + 1] = even[i] + 1;
            odd[i + 1] = odd[i];
        }
    }
    for (int i = 0; i < Q; i++) { // traversing the queries
        int r = query[i][2]; // right range
        int l = query[i][1]; // left range
        int k = query[i][0]; // type of query
        int q = r - l + 1; // number of elements in the given range
        int p;
        if (k) // k is the type of query and we are finding the
            //number of elements with same parity in the given range
            p = odd[r] - odd[l - 1];
        else
            p = even[r] - even[l - 1];
        if (!p) // if p is zero we simply print 0
            cout << "0\n";
        else if (p == q) // if p == q we print 1
            cout << "1\n";
        else {
            int g = __gcd(p, q);
            cout << p / g << " " << q / g << "\n"; // as p and shouldn't have a common gcd so we divide the gcd
        }
    }
}
int main(){
    int arr[] = { 6, 5, 2, 1, 7 }; // given array
    int n = sizeof(arr) / sizeof(int); // size of our array
    int Q = 2; // number of our queries
    int query[Q][3] = {{ 0, 2, 2 },{ 1, 2, 5 }}; // given queries
    solve(arr, n, Q, query);
    return 0;
}

आउटपुट

0
3 4

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

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

निष्कर्ष

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


  1. जांचें कि कोई संख्या दिए गए आधार में है या नहीं C++

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

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

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

  1. C++ प्रोग्राम यह जांचने के लिए कि संख्या सम है या विषम

    एक संख्या तब भी होती है जब वह दो से विभाज्य हो और विषम हो यदि वह दो से विभाज्य न हो। कुछ सम संख्याएँ हैं - 2, 4, 6, 8, 10, 12, 14, 16 कुछ विषम संख्याएँ हैं - 1, 3, 5, 7, 9, 11, 13, 15, 17 मापांक का उपयोग करके जांचें कि संख्या सम है या विषम है मापांक का उपयोग करके संख्या सम या विषम है या नहीं यह ज