কম্পিউটার টিউটোরিয়াল

C++-এ অ্যারে-এর XOR শূন্য করার জন্য মিনিমাম অপারেশন


সমস্যা বিবরণ

n এলিমেন্টের একটি অ্যারে দেওয়া আছে। টাস্ক হলো পুরো অ্যারে-এর XOR ০ করা। এজন্য আমরা নিচের কাজগুলো করতে পারি:

আমরা যেকোনো একটি এলিমেন্ট সিলেক্ট করতে পারি −

  • এলিমেন্ট সিলেক্ট করার পর, সেটি ১ দিয়ে ইনক্রিমেন্ট বা ডিক্রিমেন্ট করতে পারি।
  • সিলেক্ট করা এলিমেন্টের জন্য মিনিমাম সংখ্যক ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেশন বের করতে হবে যাতে পুরো অ্যারে-এর XOR সম ০ হয়।

উদাহরণ

যদি arr[] = {2, 4, 7} হয়, তবে ১ অপারেশন দরকার −

  • এলিমেন্ট ২ সিলেক্ট করুন
  • ১ দিয়ে ডিক্রিমেন্ট করুন
  • এখন অ্যারে হয়ে যায় {3, 4, 7} এবং এর XOR হলো ০

অ্যালগরিদম

  • পুরো অ্যারে-এর XOR বের করুন
  • মান लें, আমরা arr[i] এলিমেন্টটি সিলেক্ট করেছি, তাহলে সেটির কস্ট হবে absolute(arr[i] - (XORsum ^ arr[i]))
  • প্রতিটি এলিমেন্টের জন্য এই এবসোলিউট মানগুলোর মিনিমামই আমাদের রিকোয়ার্ড মিনিমাম অপারেশন

উদাহরণ

#include <iostream> 
#include <climits> 
#include <cmath> 
using namespace std; 

void getMinCost(int *arr, int n) { 
    int operations = INT_MAX; 
    int elem; 
    int xorValue = 0; 
    for (int i = 0; i < n; ++i) { 
        xorValue = xorValue ^ arr[i]; 
    } 
    for (int i = 0; i < n; ++i) { 
        if (operations > abs((xorValue ^ arr[i]) - arr[i])) { 
            operations = abs((xorValue ^ arr[i]) - arr[i]); 
            elem = arr[i]; 
        } 
    } 
    cout << "Element= " << elem << endl; 
    cout << "Minimum required operations = " << abs(operations) << endl; 
} 

int main() { 
    int arr[] = {2, 4, 7}; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    getMinCost(arr, n); 
    return 0; 
}

আউটপুট

যখন আপনি উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করবেন। এটি নিচের আউটপুট জেনারেট করবে:

Element = 2 
Minimum required operations = 1

  1. C++ ব্যবহার করে অ্যারের সব এলিমেন্ট ০ করার ন্যূনতম অপারেশন সংখ্যা

  2. C++-এ অ্যারের GCD কে k-এর গুণিতক বানানোর ন্যূনতম অপারেশন

  3. C++-এ কো-প্রাইম অ্যারে बनाने জন্য ন্যূনতম ইনসারশন

  4. C++-এ অ্যারের সব এলিমেন্ট একই করার জন্য ন্যূনতম ডিলিট অপারেশন