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

सी ++ प्रोग्राम एल-आर जोड़े की संख्या खोजने के लिए जिसके लिए एक्सओरेड परिणाम सारांश के समान है

मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें पूर्णांकों l और r के युग्मों की संख्या ज्ञात करनी है जो A[l] XOR A[l+1] XOR ... XOR A[r-1] XOR A[r] =A[l] + A[ को संतुष्ट करते हैं। एल+1] + ... ए[आर]।

इसलिए, यदि इनपुट ए =[2, 5, 4, 6] जैसा है, तो आउटपुट 5 होगा, क्योंकि जोड़े (1,1), (2,2), (3,3), (4, 4) और (1,2)।

कदम

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

n := size of A
Define some arrays of size (n + 1) each, a, s and sx
for initialize i := 1, when i <= n, update (increase i by 1), do:
   a[i] := A[i - 1]
   s[i] := s[i - 1] + a[i]
   sx[i] := sx[i - 1] XOR a[i]
res := 0
for initialize l := 1, when l <= n, update (increase l by 1), do:
   bg := l, en = n, r = l
   while bg <= en, do:
      mi := (bg + en) / 2
      if s[mi] - s[l - 1] is same as (sx[mi] XOR sx[l - 1]), then:
         r := mi
         bg := mi + 1
      Otherwise
         en := mi - 1
      res := res + (r - l + 1)
return res

उदाहरण

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

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

int solve(vector<int> A){
   int n = A.size();
   vector<int> a(n + 1), s(n + 1), sx(n + 1);
   for (int i = 1; i <= n; i++){
      a[i] = A[i - 1];
      s[i] = s[i - 1] + a[i];
      sx[i] = sx[i - 1] ^ a[i];
   }
   int res = 0;
   for (int l = 1; l <= n; l++){
      int bg = l, en = n, r = l;
      while (bg <= en){
         int mi = (bg + en) / 2;
         if (s[mi] - s[l - 1] == (sx[mi] ^ sx[l - 1])){
            r = mi;
            bg = mi + 1;
         }
         else
            en = mi - 1;
      }
      res += (r - l + 1);
   }
   return res;
}
int main(){
   vector<int> A = { 2, 5, 4, 6 };
   cout << solve(A) << endl;
}

इनपुट

{ 2, 5, 4, 6 }

आउटपुट

5

  1. किसी संख्या के विषम गुणनखंडों का योग ज्ञात करने के लिए C++ प्रोग्राम

    एक सकारात्मक पूर्णांक के साथ दिया गया है और कार्य किसी संख्या के विषम कारकों को उत्पन्न करना और दिए गए विषम कारकों का योग ज्ञात करना है। उदाहरण Input-: number = 20 Output-: sum of odd factors is: 6 Input-: number = 18 Output-: sum of odd factors is: 13 तो, परिणाम =1 + 5 =6 नीचे दिए गए कार्यक्रम

  1. हेक्साडेसिमल से दशमलव के लिए C++ प्रोग्राम

    एक इनपुट के रूप में एक हेक्साडेसिमल संख्या के साथ दिया गया, कार्य दिए गए हेक्साडेसिमल संख्या को दशमलव संख्या में परिवर्तित करना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और 0 - 9 के मूल्यों के साथ दर्शाया जाता है जबकि हे

  1. पायथन में पहले और आखिरी जोड़े के उत्पाद के लिए चौगुनी संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, जिसमें अद्वितीय सकारात्मक संख्याएँ होती हैं। हमें अंकों में से (a, b, c, d) जैसे चौगुनी संख्या ज्ञात करनी है कि a*b =c*d, a, b, c और d सभी अंकों के अलग-अलग अवयव हैं। इसलिए, यदि इनपुट संख्या =[3, 6, 4, 8] की तरह है, तो आउटपुट 8 होगा