কম্পিউটার

C++ অ্যারের সমস্ত উপাদানে XOR অপারেশন প্রয়োগ করে অ্যারের যোগফলকে মিনিমাইজ করা


বিবরণ

আকারের একটি অ্যারে দেওয়া, N. একটি উপাদান X খুঁজুন যাতে অ্যারের উপাদানগুলির যোগফল ন্যূনতম হওয়া উচিত যখন X এবং একটি অ্যারের প্রতিটি উপাদানের সাথে XOR অপারেশন করা হয়৷

যদি ইনপুট অ্যারে হয়:arr [] ={8, 5, 7, 6, 9} তাহলে ন্যূনতম যোগফল হবে 30 অ্যারের উপাদানগুলির বাইনারি উপস্থাপনা হল:8 :10005 :01017 :01116 :01019 :1001 যদি X =5 XOR সম্পাদনের পর যোগফল হবে 30:8 ^ 5 =135 ^ 5 =07 ^ 5 =26 ^ 5 =39 ^ 5 =12 যোগফল =30 (13 + 0 + 2 + 3 + 12)

অ্যালগরিদম

<পূর্ব>1. 32 আকারের একটি বিটম্যাপ তৈরি করুন যেহেতু আমরা 32 বিট পূর্ণসংখ্যা ব্যবহার করছি।2। একটি অ্যারের উপর এবং একটি অ্যারের প্রতিটি উপাদানের জন্য পুনরাবৃত্তি করুন:a। যদি একটি উপাদানের 0 তম বিট সেট করা হয় তবে বিটম্যাপ[0] খ. যদি কোনো এলিমেন্টের ১ম বিট সেট করা হয় তাহলে বিটম্যাপ[1] এর সংখ্যা বৃদ্ধি করে। এখন নিম্নরূপ বিটম্যাপ অ্যারেতে পুনরাবৃত্তি করে X খুঁজুন:if bitMap[i]> n/2:thenX =X + pow(2, i);4। ইনপুট অ্যারে উপর পুনরাবৃত্তি. X এবং একটি অ্যারে5 এর প্রতিটি উপাদানের সাথে XOR অপারেশন সম্পাদন করুন। অ্যারে উপাদানের যোগফল গণনা করুন

উদাহরণ

#include #include #include নেমস্পেস std ব্যবহার করে;#SIZE(arr) (sizeof(arr) / sizeof(arr[0]))const int MAX_SIZE =32;int getSum সংজ্ঞায়িত করুন (int *arr, int n){ int bitMap[MAX_SIZE]; int bitLength =0; int sum =0; int res =0; পূরণ করুন(bitMap, bitMap + n, 0); জন্য (int i =0; i  0) { int rem =num % 2; num =num / 2; যদি (rem ==1) { bitMap[f]++; } ++f; bitLength =max(bitLength, f); } } int প্রার্থী =0; জন্য (int i =0; i  n / 2) { প্রার্থী +=সংখ্যা; } } এর জন্য (int i =0; i  

আউটপুট

আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −

তৈরি করে
সর্বনিম্ন যোগফল:30

  1. C++ এ একটি অনির্দেশিত গ্রাফের সমস্ত সংযুক্ত উপাদানের ন্যূনতম উপাদানগুলির সমষ্টি

  2. C++-এ সমস্ত অ্যারের উপাদানগুলিকে সমান করতে প্রয়োজনীয় ন্যূনতম অপারেশন

  3. C++ এ ধারাবাহিক উপাদানগুলির XOR ব্যবহার করে অ্যারের উপাদানগুলি খুঁজুন

  4. C++ ব্যবহার করে অ্যারের সমস্ত উপাদান মুছে ফেলার জন্য ন্যূনতম সংখ্যক অপারেশন প্রয়োজন।