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

C++ . में किसी गेम में उन संख्याओं को गिनें जिन्हें शून्य या उससे कम तक घटाया जा सकता है

धनात्मक संख्याओं की एक सरणी और दो पूर्णांक A और B को देखते हुए। दो खिलाड़ी एक खेल खेल रहे हैं जिसमें वे सरणी में संख्याओं को कम करेंगे। खिलाड़ी 1 एरे के किसी भी तत्व को ए से कम कर सकता है और खिलाड़ी 2 एरे के किसी भी तत्व को बी से बढ़ा सकता है। लक्ष्य उन संख्याओं की गणना करना है जिन्हें खिलाड़ी 1 द्वारा 0 या उससे कम किया जा सकता है। पहला खिलाड़ी बनाता है पहला कदम। एक बार 0 या उससे कम की संख्या को खिलाड़ी 2 द्वारा ध्यान में नहीं रखा जा सकता है।

उदाहरण के लिए

इनपुट

arr[] = { 1,4,5,2 } A=2, B=3

आउटपुट

Count of numbers that can be reduced to zero or less in a game are: 1

स्पष्टीकरण

The only number that can be reduced by player 1 is 1 as on first move it
will be reduced to −1. Rest all will become greater than A after player 2 increases their value.

इनपुट

arr[] = { 1,4,5,2 } A=4, B=4

आउटपुट

Count of numbers that can be reduced to zero or less in a game are: 2

स्पष्टीकरण

On first move player 1 reduces 4 to 0. arr[]= [ 1, 0, 5, 2 ]
Player 2 will increase 1 to 4. arr[]= [ 5, 0, 5, 2 ]
Player 1 will decrease 2 to −2. Arr[] = [ 5, 0, 5, −2 ].
From now onwards all numbers are greater than A so cannot be reduced by player 1 to 0 or less as player 2 is also increasing them simultaneously.

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

इस दृष्टिकोण में पहले जांचें कि क्या ए> बी। यदि हाँ, तो N चालों में A, arr[] के सभी N तत्वों को 0 या उससे कम कर देगा। यदि A<=B तो हम जाँच करेंगे

  • सभी संख्याएँ जो खिलाड़ी 2 के बाद भी A से बड़ी नहीं हो जाती हैं, उनमें B जोड़ देती हैं। मान लें कि इसे C1 के रूप में गिना जाता है।

  • सभी संख्याएँ जो A से कम हैं और खिलाड़ी 2 के बाद A से बड़ी हो जाती हैं, उनमें B जोड़ देती हैं। मान लें कि इसे C2 के रूप में गिना जाता है।

कुल गणना C=C1+ (C2+1)/2 होगी। जैसा कि 2 के मामले में, उनमें से केवल आधा घटकर 0 या उससे कम हो जाएगा क्योंकि दोनों खिलाड़ी एक साथ उन्हें बढ़ाते/घटाते हैं। और खिलाड़ी 2 उनमें से केवल आधे को A से अधिक तक बढ़ा सकता है। इस बीच, खिलाड़ी 1 अन्य आधे को घटाकर <=0 कर देगा।

  • एक पूर्णांक सरणी लें जिसमें धनात्मक संख्याएँ हों।

  • दो चर ए और बी लें।

  • फ़ंक्शन reduce_zero(int arr[], int size, int A, int B) उन संख्याओं की गिनती लौटाएगा जिन्हें किसी गेम में शून्य या उससे कम तक घटाया जा सकता है

  • प्रारंभिक गणना 0 के रूप में लें।

  • अस्थायी गणना के रूप में दो चर temp_1 और temp_2 लें।

  • अगर ए> बी तो सरणी की लंबाई लौटाएं जो आकार है।

  • अब प्रत्येक गिरफ्तारी के लिए लूप के लिए उपयोग करके सरणी को पार करें [i] यदि तत्व का योग और बी <ए तो वेतन वृद्धि temp_1।

  • प्रत्येक तत्व arr[i] <=A, वेतन वृद्धि temp_2 के लिए।

  • अब लूप के अंत के बाद, गिनती=temp_1+ (temp_2+1)/2 लें। जैसा कि सूत्र में दिया गया है।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int reduced_zero(int arr[], int size, int A, int B){
   int count = 0;
   int temp_1 = 0, temp_2 = 0;
   if (A > B){
      return size;
   }
   for(int i = 0; i < size; i++){
      if (A >= arr[i] + B){
         temp_1++;
      }
      else if(A >= arr[i]){
         temp_2++;
      }
   }
   int temp = (temp_2 + 1) / 2;
   count = temp + temp_1;
   return count;
}
int main(){
   int arr[] = { 3, 3, 1, 2, 4, 7, 1};
   int A = 4, B = 1;
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of numbers that can be reduced to zero or less in a game are:  "<<reduced_zero(arr, size, A, B);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of numbers that can be reduced to zero or less in a game are: 7

  1. C++ में संख्या को विभाजित करने वाली संख्या में अंकों की संख्या ज्ञात कीजिए

    मान लीजिए एक नंबर दिया गया है। हमें उस संख्या के अंकों की संख्या गिननी है जो संख्या को समान रूप से विभाजित करती है। मान लीजिए कि संख्या 1012 है, परिणाम 3 है। तीन अंक 1, 1 और 2 हैं जो समान रूप से 1012 को विभाजित करते हैं। इसे हल करने के लिए, हम मॉड्यूलस ऑपरेशन का उपयोग करके संख्या के प्रत्येक अंक को

  1. जांचें कि क्या प्रत्येक पंक्ति से एक संख्या का चयन किया जा सकता है जैसे कि संख्याओं का xor C++ में शून्य से अधिक है

    मान लीजिए हमारे पास N x M आकार का एक 2D सरणी है। कार्य यह जांचना है कि क्या हम प्रत्येक पंक्ति से एक संख्या का चयन कर सकते हैं, इस तरह से कि उन तत्वों का XOR गैर-शून्य या 0 से अधिक है। मान लीजिए कि एक मैट्रिक्स है इस तरह - 7 7 7 10 10 7 यदि हम XOR करते हैं, तो उत्तर शून्य नहीं होगा, क्योंकि दो

  1. फ़ंक्शन जिन्हें C++ में ओवरलोड नहीं किया जा सकता है

    C++ में हम फंक्शन्स को ओवरलोड कर सकते हैं। लेकिन कई बार ओवरलोडिंग नहीं होती है। इस खंड में, हम देखेंगे कि विभिन्न मामले क्या हैं, जिनमें हम कार्यों को अधिभारित नहीं कर सकते हैं। जब फ़ंक्शन सिग्नेचर समान होते हैं, केवल रिटर्न प्रकार अलग होता है, तो हम फ़ंक्शन को ओवरलोड नहीं कर सकते। int my_func(