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

खेल शुरू होने से पहले बच्चों की न्यूनतम और अधिकतम संख्या ढूंढने के लिए C++ प्रोग्राम


मान लीजिए हमारे पास K संख्या के तत्वों वाला एक ऐरे A है। मान लें, एक खेल में N खिलाड़ी हैं और एक गेम मास्टर है। इस खेल में K राउंड हैं। iवें राउंड में गेम मास्टर A[i] संख्या के बच्चों के साथ समूह बनाने की घोषणा करता है। फिर शेष बच्चे A[i] बच्चों के जितने संभव हो उतने समूह बनाते हैं। एक बच्चा कई समूहों में भाग नहीं ले सकता। जो समूह के बिना रह जाते हैं वे खेल छोड़ देते हैं। अन्य अगले राउंड में आगे बढ़ते हैं। एक राउंड में कोई खिलाड़ी हानि नहीं हो सकती। अंत में, Kवें राउंड के बाद, ठीक दो बच्चे बचते हैं, और उन्हें विजेता घोषित किया जाता है। हमें खेल शुरू होने से पहले बच्चों की सबसे छोटी और सबसे बड़ी संभव संख्या ढूंढनी है, या यह निर्धारित करना है कि N का कोई मान्य मान मौजूद नहीं है।

उदाहरण के लिए, यदि इनपुट A = [3, 4, 3, 2] है, तो आउटपुट [6, 8] होगा, क्योंकि यदि खेल 6 बच्चों से शुरू होता है, तो यह आगे बढ़ता है:

  • राउंड 1 में, उनमें से 6, 3 लोगों के दो समूह बनाते हैं
  • वे 4 और 2 बच्चों के साथ दो समूह बना रहे हैं
  • फिर 1 बच्चे का एक समूह और 3 का एक और, और वह 1 खेल छोड़ देगा
  • उनमें से तीन 1 और 2 का समूह बनाते हैं। और 1 छोड़ देगा।

अंतिम 2 बच्चों को विजेता घोषित किया जाता है।

चरण

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

n := A का आकार आकार 100010 का एक बड़ा ऐरे a, l, r, a परिभाषित करें। l := 2, r = 2 i := 1 से n तक, करें: a[i] := A[i - 1] i := n से 1 तक, करें: x := a[i], L := (l + x - 1) यदि L > R, तो: -1, 0 वापस करें l := L, r = R + x - 1 l, r वापस करें

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; void solve(vector<int> A){    int n = A.size();    int l, r, a[100010];    l = 2, r = 2;    for (int i = 1; i <= n; i++)       a[i] = A[i - 1];    for (int i = n; i >= 1; i--){       int x = a[i], L = (l + x - 1) / x * x, R = r / x * x;       if (L > R){          cout << "-1, 0";       }       l = L, r = R + x - 1;    }    cout << l << ", " << r << endl;    return; } int main(){    vector<int> A = { 3, 4, 3, 2 };    solve(A); }

इनपुट

{ 3, 4, 3, 2 }

आउटपुट

6, 8

  1. - C++ में सरणी का सबसे बड़ा एलिमेंट खोजने का प्रोग्राम

    एक सरणी में कई एलिमेंट्स होते हैं और सरणी में सबसे बड़ा एलिमेंट वह होता है जो अन्य एलिमेंट्स से बड़ा होता है। उदाहरण के लिए। 5 1 7 2 4 उपरोक्त सरणी में, 7 सबसे बड़ा एलिमेंट है और यह इंडेक्स 2 पर है। सरणी का सबसे बड़ा एलिमेंट खोजने का एक प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream>

  1. - C++ प्रोग्राम: तीन संख्याओं में सबसे बड़ी संख्या खोजें

    परिचयतीन संख्याओं में सबसे बड़ी संख्या if स्टेटमेंट का कई बार उपयोग करके पाई जा सकती है। यह एक प्रोग्राम में इस प्रकार दिया गया है - उदाहरण#include <iostream> using namespace std; int main() { int a = 5, b = 1, c = 9; if (a > b) { if (a > c) cout << a &

  1. - C# प्रोग्राम सूची में सबसे बड़ा, सबसे छोटा, दूसरा सबसे बड़ा, दूसरा सबसे छोटा ढूंढने के लिए

    सूची सेट करें var val = new int[] { 99, 35, 26, 87 }; अब सबसे बड़ी संख्या प्राप्त करें। z); सबसे छोटी संख्या z); दूसरी सबसे बड़ी संख्या z).Skip(1).First(); दूसरी सबसे छोटी संख्या z).Skip(1).First(); निम्नलिखित कोड है: उदाहरण z).Skip(1).First(); Console.WriteLine(Second