কম্পিউটার

C++ ব্যবহার করে অনন্য ট্রিপলেটের সংখ্যা খুঁজুন যাদের XOR শূন্য


এই প্রবন্ধে, আমরা অনন্য সংখ্যার একটি প্রদত্ত অ্যারেতে অনন্য ট্রিপলেটের (x, y, z) সংখ্যা গণনা করার বিষয়ে আলোচনা করব যেখানে তাদের XOR হল 0। এইভাবে, তিনটি উপাদানই অনন্য যেখানে তিনটি উপাদানই অনন্য এবং সবগুলি গণনা করবে। ট্রিপলেটের সংমিশ্রণ উদাহরণস্বরূপ −

Input : arr[ ] = { 5, 6, 7, 1, 3 }
Output : 2
Explanation : triplets are { 5, 6, 3 } and { 6, 7, 1 } whose XOR is zero.

Input : arr[ ] = { 3, 6, 8, 1, 5, 4 , 12}
Output : 3
Explanation : Triplets are { 3, 6, 5 }, { 1, 5, 4 } and { 4, 8, 12 } whose XOR is zero.

সমাধান খোঁজার পদ্ধতি

আমরা জানি একই মানের XOR সবসময় শূন্য দেয়। সুতরাং আমরা অনন্য ট্রিপলেটগুলি খুঁজে পাই, একটি আশাবাদী পদ্ধতি প্রয়োগ করা যেতে পারে, যা একটি অ্যারে থেকে দুটি মানের XOR খুঁজে বের করে ফলাফলটি সংরক্ষণ করে এবং অ্যারের ফলাফলের সমান মানের সন্ধান করে। এছাড়াও, ফলাফলের মান জোড়ায় কোন মানের সমান হওয়া উচিত নয়। সন্ধান করুন

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int main () {
   int arr[] = { 3, 6, 8, 1, 5, 4, 12 };
   int n = sizeof (arr) / sizeof (arr[0]);
   int result;
   // count variable to keep count of pairs.
   int count = 0;
   // creating a set to store unique numbers .
   unordered_set < int >values;
   // inserting values in set.
   for (int i = 0; i < n; i++)
      values.insert (arr[i]);


   // traverse for all pairs to calculate XOR.
   for (int i = 0; i < n - 1; i++) {
      for (int j = i + 1; j < n; j++) { // finding xor of i, j pair.
         int XR = arr[i] ^ arr[j];

         // checking if XOR value of pair present in array
         // and value should not be in pairs.
         if (values.find (XR) != values.end () && XR != arr[i] &&
            XR != arr[j])
            count++;
      }

   }
   // storing result
   result = count / 3;
   cout << "Number of unique triplets : " << result;
   return 0;
}

আউটপুট

Number of unique triplets : 3

উপরের কোডের ব্যাখ্যা

  • unordered_set মানগুলির একটি সেট তৈরি করা; একটি প্রদত্ত অ্যারের অনন্য সংখ্যা সংরক্ষণ করতে।
  • values.insert (arr[i]) ব্যবহার করে সেটে মান সন্নিবেশ করার জন্য () লুপ ব্যবহার করে।
  • সমস্ত জোড়ার মধ্য দিয়ে যাওয়ার জন্য দুটি নেস্টেড লুপ ব্যবহার করা এবং তাদের XOR মান গণনা করা।
  • তারপর, অ্যারেতে XOR মানটি অনুসন্ধান করুন এবং যদি মানটি জোড়ায় না হয়ে একটি অ্যারেতে পাওয়া যায় তবে সংখ্যা বৃদ্ধি করুন৷
  • গণনা / 3 হিসাবে ফলাফল সংরক্ষণ করলে ট্রিপলেটের তিনটি সংমিশ্রণ গণনা করা হবে এবং আমাদের অনন্য ট্রিপলেট প্রয়োজন৷

উপসংহার

এই নিবন্ধটি XOR মান 0 বিশিষ্ট ত্রিপলের সংখ্যা খুঁজে নিয়ে আলোচনা করেছে; আমরা অনন্য ট্রিপলেট খুঁজে পেতে একটি আশাবাদী পদ্ধতি নিয়ে আলোচনা করেছি। আমরা সমস্যা সমাধানের জন্য C++ প্রোগ্রাম নিয়েও আলোচনা করেছি। যাইহোক, আমরা এই প্রোগ্রামটিকে জাভা, সি, পাইথন ইত্যাদির মতো অন্য যেকোনো প্রোগ্রামিং ভাষায় লিখতে পারি। আমরা আশা করি এই নিবন্ধটি আপনার কাজে লাগবে।


  1. C++ ব্যবহার করে পঞ্চভুজ পিরামিডাল নম্বর খুঁজুন

  2. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে স্টপিং স্টেশনের সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে একটি সেটে রিফ্লেক্সিভ রিলেশনের সংখ্যা খুঁজুন