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

সি++-এ অ্যারেতে অনন্য উপাদান খুঁজে বের করা যেখানে সব উপাদান k বার চাড়া একটি একবার থাকে


আমাদের কাছে একটি অ্যারে A রয়েছে। A-র সব উপাদান m বার tekrar হয়, কিন্তু একটি উপাদান শুধু একবার থাকে। আমাদের সেই অনন্য উপাদানটি খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুট হয় A = [6, 2, 7, 2, 2, 6, 6], m = 3, তবে আউটপুট হবে 7।

সমাধান পদ্ধতি

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • INT_SIZE := একটি ইন্টিজার টাইপ ভেরিয়েবলের আকারের ৮ গুণ
  • আকার INT_SIZE-এর একটি count সরণি সংজ্ঞায়িত করুন এবং ০ দিয়ে भरুন
  • i := 0 থেকে आरंभ करें, जब i < INT_SIZE, अपडेट करें (i को 1 से बढ़ाएं), करें:
    • j := 0 থেকে आरंभ करें, जब j < size, अपडेट करें (j को 1 से बढ़ाएं), करें:
      • यदि (arr[j] AND 2^i) 0 के बराबर नहीं है, तो:
        • count[i] := count[i] + 1
      • res := 0
    • i := 0 থেকে आरंभ करें, जब i < INT_SIZE, अपडेट करें (i को 1 से बढ़ाएं), करें:
      • res := res + ((count[i] mod m) * 2^i)
    • res ফেরত দিন

    উদাহরণ (C++)

    বेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

    #include <bits/stdc++.h> using namespace std; int selectUnique(unsigned int arr[], int size, int m){    int INT_SIZE = 8 * sizeof(unsigned int);    int count[INT_SIZE];    memset(count, 0, sizeof(count));    for(int i = 0; i < INT_SIZE; i++)       for(int j = 0; j < size; j++)          if((arr[j] & (1 << i)) != 0)             count[i] += 1;    unsigned res = 0;    for(int i = 0; i < INT_SIZE; i++)       res += (count[i] % m) * (1 << i);    return res; } main(){    unsigned int arr[] = { 6, 2, 5, 2, 2, 6, 6 };    int size = sizeof(arr) / sizeof(arr[0]);    int m = 3;    cout << selectUnique(arr, size, m); }

    इनपुट

    { 6, 2, 5, 2, 2, 6, 6 }

    आउटपुट

    5

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

  2. C++ ব্যবহার করে অ্যারেতে এমন এলিমেন্ট বের করা যেটি সব এলিমেন্টকে ভাগ করে দেয়

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

  4. C++-এ অ্যারেতে সব জোড়া সन्नিহিত উপাদানগুলোর tuyệt দায়ক পার্থক্য