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

C++ में N बार पासा फेंकने पर अधिकतम अपेक्षित डॉट्स की संख्या

दिया गया कार्य M फलक वाले पासे को N बार फेंकने के बाद अधिकतम अपेक्षित डॉट्स की संख्या की गणना करना है।

पासे का पहला फलक 1 डॉट रखता है, दूसरा फलक 2 डॉट रखता है और इसी तरह। इसी तरह M-वां फलक M संख्या में डॉट रखता है।

प्रत्येक फलक के प्रकट होने की संभावना 1/M हो जाती है।

उदाहरण से समझते हैं

इनपुट - M=2, N=3

आउटपुट - 1.875

व्याख्या - पासे के 2 पक्ष = {1, 2}

यदि पासा 3 बार फेंका जाता है तो नमूना स्थान = M^N = 2^3

{(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2,) 
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2,)}
(1, 1, 1) में अधिकतम संख्या = 1
(1, 1, 2) में अधिकतम संख्या = 2
(1, 2, 1) में अधिकतम संख्या = 2
(1, 2, 2) में अधिकतम संख्या = 2
(2, 1, 1) में अधिकतम संख्या = 2
(2, 1, 2) में अधिकतम संख्या = 2
(2, 2, 1) में अधिकतम संख्या = 2
(2, 2, 2) में अधिकतम संख्या = 2
प्रत्येक केस की संभावना = 1/2^3 = 0.125
इसलिए, अधिकतम संख्या की अपेक्षा = (1+2+2+2+2+2+2+2) * (0.125) = 1.875

इनपुट - M=2, N=2

आउटपुट - 1.75

प्रयुक्त दृष्टिकोण

  • वह अधिकतम केस जिसमें एक संख्या आ सकती है, उसकी पिछली संख्या का उपयोग करके सूत्र द्वारा पाया जा सकता है: i^N - (i-1)^N।

    उदाहरण के लिए यदि M=4 और N=2, तो कुल केस जिनमें अधिकतम = 4 होगा, 4^2 - (4-1)^2 = 7 होंगे।

    इसलिए अंतिम उत्तर 1 से M तक हर तत्व पर इस सूत्र को लागू करके और उन्हें जोड़कर होगा:

    (i * (i^N - (i - 1)^N)) / M^N
  • MaxExpect() फंक्शन में max = 0 टाइप का एक वेरिएबल आरंभ करें double टाइप का योग स्टोर करने के लिए।

  • फिर i=M से i>0 तक लूप चलाएं।

  • लूप के अंदर उपरोक्त बताए गए सूत्र को लागू करें और सभी परिणामी मानों को max वेरिएबल में जोड़ते रहें।

C++ प्रोग्राम उदाहरण

#include <bits/stdc++.h>
using namespace std;

double MaxExpect(double M, double N) {
    double max = 0.0, i;
    for (i = M; i; i--)
        /* अधिकतम संख्या और अधिकतम संख्याओं के योग का सूत्र */
        max += (pow(i / M, N) - pow((i - 1) / M, N)) * i;
    return max;
}

int main() {
    double M = 2, N = 3;
    cout << MaxExpect(M, N);
    return 0;
}

आउटपुट

1.875
  1. - C++ कोड: लक्ष्य x प्राप्त करने के लिए डाइस रोल की संख्या गिनें

    मान लीजिए हमारे पास एक संख्या x है। हमारे पास एक छह-फलक वाला डाइस है और इसके फलक 2 से 7 तक क्रमांकित हैं। हम डाइस से ठीक x अंक चाहते हैं। जब हम डाइस फेंकते हैं तो फलक की संख्या हमारे लक्ष्य तक पहुंचने के लिए जुड़ जाएगी। हमें वास्तव में डाइस रोल की संख्या की परवाह नहीं है, इसलिए हम सिर्फ यह जानना चाह

  1. - दिए गए ऑपरेशन को q बार लागू करने के बाद सरणी में विभिन्न संख्याओं की संख्या ज्ञात करें C++ में

    इस समस्या में, हमें एक संख्या N दी गई है जो सभी शून्यों से बनी एक सरणी का आकार है और Q क्वेरीज़ जिनमें से प्रत्येक निम्न प्रकार की है - यह क्वेरी s से e (दोनों समावेशी) तक के सभी तत्वों को val पर अपडेट करेगी। हमारा कार्य दिए गए ऑपरेशन को q बार लागू करने के बाद सरणी में विभिन्न संख्याओं की संख्या ज्

  1. C++ में अधिकतम मोड़ों वाला पथ लंबाई C++ में अधिकतम मोड़ों वाला पथ लंबाई

    एक समस्या को हल करने के लिए जिसमें हमें एक बाइनरी ट्री दिया गया है। अब हमें अधिकतम संख्या में मोड़ों वाला पथ खोजने की आवश्यकता है। यानी, एक मोड़ तब माना जाता है जब पथ की दिशा बाएं से दाएं या इसके विपरीत बदलती है, उदाहरण के लिएइनपुट -आउटपुट -6अब इस दृष्टिकोण में, हम ट्री को पार करेंगे और पिछली गतिविध