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

XORed योग के अधिकतम संभव मान को ढूंढने के लिए C++ प्रोग्राम


मान लीजिए हमारे पास N तत्वों वाला एक ऐरे A है और एक अन्य मान K है। 0 से K की रेंज में एक पूर्णांक X के लिए, मान लें f(X) = (X xor A[1]) + (X xor A[2]) + ... + (X xor A[N])। हमें f का अधिकतम संभव मान ढूंढना है।

उदाहरण के लिए, यदि इनपुट K = 7; A = [1, 6, 3] है, तो आउटपुट 14 होगा, क्योंकि f(4) = (4 XOR 1) + (4 XOR 6) + (4 XOR 3) = 5 + 2 + 7 = 14।

चरण

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

n := A का आकार i := 45 से 0 तक, करें: p := 2^i m := 0 j := 0 से n-1 तक, करें: यदि A[j] AND p शून्येतर है, तो: m बढ़ाएं यदि o + p <= k, तो: यदि m < n - m, तो: m := n - m o := o + p d := d + p * m d वापस करें

उदाहरण

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

#include <bits/stdc++.h> using namespace std; long solve(int k, vector<int> A){    long n = A.size(), d = 0, m, p, o = 0;    for (long i = 45; i >= 0; i--){       p = pow(2, i);       m = 0;       for (int j = 0; j < n; j++){          if (A[j] & p)             m++;       }       if (o + p <= k){          if (m < n - m){             m = n - m;             o += p;          }       }       d += p * m;    }    return d; } int main(){    int K = 7;    vector<int> A = { 1, 6, 3 };    cout << solve(K, A) << endl; }

इनपुट

7, { 1, 6, 3 }

आउटपुट

14

  1. C++ में बाइनरी ट्री में अधिकतम स्तर योग खोजें C++ में बाइनरी ट्री में अधिकतम स्तर योग खोजें

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है जिसमें सकारात्मक और नकारात्मक मान हैं। हमारा कार्य बाइनरी ट्री में अधिकतम स्तर योग खोजना है। समस्या विवरण: हमारे पास एक बाइनरी ट्री है, हम बाइनरी ट्री में सभी स्तरों का योग खोजेंगे और फिर उनमें से अधिकतम लौटाएंगे।एक उदाहरण लेकर समस्या को समझते

  1. - C++ में किसी कैरेक्टर का ASCII मान खोजने का प्रोग्राम

    ASCII (अमेरिकन स्टैंडर्ड कोड फॉर इंफॉर्मेशन इंटरचेंज) टेबल में 128 कैरेक्टर्स होते हैं जिनके मान 0 से 127 तक होते हैं। विभिन्न कैरेक्टर्स के कुछ ASCII मान निम्नलिखित हैं: कैरेक्टर ASCII मान A 65 a 97 Z 90 z 122 $ 36 & 38 ? 63 किसी कैरेक्टर का ASCII मान खोजने का एक प्रोग्राम

  1. - पायथन में सबसे छोटे समूह के अधिकतम संभव मान ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान k है। हमें सूची को k सन्निहित समूहों में विभाजित करना है। सबसे छोटा समूह वह है जिसका योग सभी समूहों में सबसे छोटा है। तो सबसे छोटे समूह के अधिकतम संभव मान को ज्ञात करें। उदाहरण के लिए, nums = [2,6,4,5,8], k=3 के लिए आउटपुट 8 होगा (समूह: [2