Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में बिटवाइज़ और इक्वल टू ज़ीरो के साथ ट्रिपल्स

मान लीजिए कि हमारे पास पूर्णांक A की एक सरणी है। हमें सूचकांकों (i, j, k) के त्रिगुणों की संख्या इस प्रकार ज्ञात करनी है कि -

A[i] और A[j] और A[k] 0 है, जहां AND बिटवाइज-AND ऑपरेटर का प्रतिनिधित्व करता है।

इसलिए, अगर इनपुट [3,1,2] जैसा है, तो आउटपुट 12

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

  • एक नक्शा परिभाषित करें मी

  • रिट:=0

  • n :=A का आकार

  • इनिशियलाइज़ i:=0 के लिए, जब i

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • इनिशियलाइज़ j :=0 के लिए, जब j

  • इनिशियलाइज़ i:=0 के लिए, जब i

    • एक्स:=ए[i]

    • सभी कुंजी-मान युग्मों के लिए a in m

      • अगर (a.key और x) 0 के समान है, तो -

        • रिट:=रिट + ए.वैल्यू

  • वापसी रिट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#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. बिटवाइज़ प्रिंट करें और C++ में नंबर N का सेट करें

    इस समस्या में, हमें 0 से n तक की सभी संख्याओं को प्रिंट करना होता है जो बिटवाइज़ और n के बाइनरी के होते हैं। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं। Input : N = 4. Output : 0 4 Explanation :    0 & 4 = 0    1 & 4 = 0    2 & 4 = 0  

  1. न्यूनतम संख्याएं जो N से छोटी या उसके बराबर हों और C++ में योग S के साथ हों

    समस्या कथन 1 से N और एक संख्या S से N नंबर दिए गए हैं। कार्य S को देने के लिए योग की न्यूनतम संख्या को प्रिंट करना है उदाहरण यदि n =7 और s =10 तो न्यूनतम 2 संख्याएँ आवश्यक हैं (9, 1) (8, 2) (7, 3) (6, 4) एल्गोरिदम Answer can be calculated using below formula (S/N) + 1 if { S %N > 0} उदाहरण #inc

  1. बिटवाइज़ और C++ में क्या है?

    बिटवाइज AND ऑपरेटर (&) पहले ऑपरेंड के प्रत्येक बिट की तुलना दूसरे ऑपरेंड के संगत बिट से करता है। यदि दोनों बिट्स 1 हैं, तो संबंधित परिणाम बिट को 1 पर सेट किया जाता है। अन्यथा, संबंधित परिणाम बिट 0 पर सेट होता है। बिटवाइज़ समावेशी और ऑपरेटर के दोनों ऑपरेंड अभिन्न प्रकार के होने चाहिए। उदाहरण के लिए,