কম্পিউটার

C++-এ Bitwise এবং Equal to Zero সহ তিনগুণ


ধরুন আমাদের A এর পূর্ণসংখ্যার একটি বিন্যাস রয়েছে। আমাদের সূচকের ত্রিগুণ সংখ্যা (i, j, k) খুঁজে বের করতে হবে যাতে −

A[i] এবং A[j] এবং A[k] হল 0, যেখানে AND bitwise-AND অপারেটরকে প্রতিনিধিত্ব করে।

সুতরাং, যদি ইনপুটটি [3,1,2] এর মত হয়, তাহলে আউটপুট হবে 12

  • এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি মানচিত্র m

    সংজ্ঞায়িত করুন
  • ret :=0

  • n :=A

    এর আকার
  • আরম্ভ করার জন্য i :=0, যখন i

    • j শুরু করার জন্য :=0, যখন j করুন

      • j শুরু করার জন্য :=0, যখন j করুন

  • আরম্ভ করার জন্য i :=0, যখন i

    • x :=A[i]

    • সমস্ত কী-মানের জোড়ার জন্য a in m

      • যদি (a.key AND x) 0 এর মত হয়, তাহলে −

        • ret :=ret + a.value

  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int countTriplets(vector<int>& A){
      unordered_map<int, int> m;
      int ret = 0;
      int n = A.size();
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < n; j++) {
            m[A[i] & A[j]]++;
         }
      }
      for (int i = 0; i < n; i++) {
         int x = A[i];
         for (auto& a : m) {
            if ((a.first & x) == 0) {
               ret += a.second;
            }
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,1,2};
   cout << (ob.countTriplets(v));
}

ইনপুট

{3,1,2}

আউটপুট

12

  1. সর্বাধিক গুণফল সহ N-এর চারটি গুণনীয়ক নির্ণয় করুন এবং C++ এ N-এর সমান যোগফল নির্ণয় করুন

  2. বিটওয়াইজ প্রিন্ট করুন এবং C++ এ একটি N সংখ্যা সেট করুন

  3. ন্যূনতম সংখ্যা যা N এর থেকে ছোট বা সমান এবং C++ এ যোগফল S সহ

  4. Bitwise এবং C++ এ কি?