কম্পিউটার

C++ এ একটি গেমে শূন্য বা তার চেয়ে কম করা যায় এমন সংখ্যাগুলি গণনা করুন


ধনাত্মক সংখ্যার একটি অ্যারে এবং দুটি পূর্ণসংখ্যা A এবং B দেওয়া হয়েছে। দুই খেলোয়াড় একটি গেম খেলছে যেখানে তারা অ্যারের সংখ্যা কমিয়ে দেবে। প্লেয়ার 1 অ্যারের যেকোন উপাদান A দ্বারা কমাতে পারে এবং প্লেয়ার 2 অ্যারের যেকোন উপাদান B দ্বারা বাড়াতে পারে৷ লক্ষ্য হল এমন সংখ্যার গণনা খুঁজে বের করা যা প্লেয়ার 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.

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

এই পদ্ধতিতে প্রথমে A> B কিনা তা পরীক্ষা করুন। যদি হ্যাঁ হয় তবে N চালে A arr[] এর সমস্ত N উপাদানকে 0 বা তার কম কমিয়ে দেবে। যদি A<=B হয় তবে আমরা পরীক্ষা করব

  • প্লেয়ার 2 তাদের সাথে B যোগ করার পরেও যে সমস্ত সংখ্যা A এর থেকে বড় হয় না। এই গণনাটিকে C1 হিসাবে ধরা যাক।

  • যে সমস্ত সংখ্যা A থেকে ছোট এবং প্লেয়ার 2 তাদের সাথে B যোগ করার পরে A থেকে বড় হয়ে যায়। এই গণনাটিকে C2 হিসাবে ধরা যাক।

মোট গণনা হবে C=C1+ (C2+1)/2। কেস 2 এর মতো, উভয় প্লেয়ার একই সাথে তাদের বাড়া/কমালে এর মধ্যে মাত্র অর্ধেক 0 বা তার কম হবে। এবং প্লেয়ার 2 তাদের অর্ধেক A এর চেয়ে বেশি বাড়াতে পারে। ইতিমধ্যে, প্লেয়ার 1 বাকি অর্ধেক <=0 কমিয়ে দেবে।

উদাহরণ

#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++ এ সর্বাধিক সংলগ্ন জোড় সংখ্যার গণনা খুঁজুন

  2. একটি সংখ্যায় সংখ্যার গণনা খুঁজুন যা সংখ্যাটিকে C++ এ ভাগ করে

  3. প্রতিটি সারি থেকে এমন একটি সংখ্যা নির্বাচন করা যায় কিনা পরীক্ষা করুন যাতে সংখ্যার xor C++ এ শূন্যের চেয়ে বেশি হয়

  4. ফাংশন যা C++ এ ওভারলোড করা যাবে না