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

C++ में सभी सबएरे XORs का XOR


इस समस्या में, हमें n तत्वों की एक सरणी दी गई है। हमारा कार्य सरणी के तत्वों से बने सभी संभावित सबएरे (क्रम में लिए गए) के XORs का XOR प्रिंट करना है।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट - array = {1, 3, 6, 8}

आउटपुट - 0

व्याख्या -

(1) ^ (3) ^ (6) ^ (8) ^ (1^3) ^ (3^6) ^ (6^8) ^ (1^3^6) ^ (3^6^8) ^ (1^3^6^8)

इस समस्या को हल करने के लिए, एक सरल समाधान सभी सबएरे पर पुनरावृति करना और XOR खोजना हो सकता है। लेकिन यह एक अकुशल दृष्टिकोण है। एक बेहतर दृष्टिकोण सरणी के प्रत्येक तत्व की आवृत्ति गिनना हो सकता है जो सभी सबएरे में हुई और XOR के गुण का उपयोग करें - तत्व का सम संख्या में XOR 0 होता है। इसका उपयोग करके हम उन सभी मानों को अनदेखा करेंगे जो सब-एरे सूची में सम संख्या में होते हैं, अब विषम घटना आवृत्ति वाले तत्वों पर विचार किया जाना है यानी विषम घटना आवृत्ति वाले तत्वों का XOR अंतिम परिणाम देगा।

सरणी के प्रत्येक तत्व की उसके सब-एरे में घटना खोजने के लिए, हम इस सूत्र (i+1)*(n-i) का उपयोग करेंगे।

इस सूत्र का उपयोग करके, हम प्रत्येक तत्व की घटना की आवृत्ति ढूंढेंगे और फिर उन तत्वों पर विचार करेंगे जिनकी विषम आवृत्ति है, उन्हें XOR करके अंतिम परिणाम प्राप्त करेंगे।

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम,

#include <iostream>
using namespace std;

int xorSubarrayXors(int arr[], int N) {
    int result = 0;
    for (int i = 0; i < N; i++) {
        int frequency = (i + 1) * (N - i);
        if (frequency % 2 == 1)
            result ^= arr[i];
    }
    return result;
}

int main() {
    int arr[] = {1, 3, 6, 8};
    int N = sizeof(arr) / sizeof(arr[0]);
    cout << "The xor of all subarray xors is: " << xorSubarrayXors(arr, N);
    return 0;
}

आउटपुट

The xor of all subarray xors is: 0
  1. C++ में दिए गए नोड के सब-ट्री के सभी नोड्स का XOR C++ में दिए गए नोड के सब-ट्री के सभी नोड्स का XOR

    इस समस्या में, हमें एक n-ट्री दी गई है और कुछ क्वेरीज हैं जो ट्री के नोड्स हैं। हमारा कार्य दिए गए नोड द्वारा बने सब-ट्री के सभी नोड्स का XOR प्रिंट करना है। आइए एक उदाहरण से समस्या को समझते हैं, क्वेरीज - {1, 6, 5} आउटपुट - 0 0 5 व्याख्या - 1^6^3^2^4^7^5 6^2^4 5 इस समस्या को हल करने के लिए, हम

  1. - C++ में अधिकतम उपसरणी योग मॉड्यूलो m (Maximum subarray sum modulo m)

    इस समस्या में, हमें आकार n की एक सरणी और एक पूर्णांक m दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में अधिकतम उपसरणी योग मॉड्यूलो m ढूंढे। प्रोग्राम विवरण - यहां, हम उपसरणी के सभी तत्वों के योग को m से विभाजित करके प्राप्त अधिकतम मान ढूंढेंगे। आइए एक उदाहरण से समझते हैं: इनपुट - सरणी = {4

  1. - C++ में सभी फैक्टर संयोजन प्रिंट करना

    इस समस्या में, हमें एक संख्या n दी गई है। हमारा कार्य n के सभी फैक्टर संयोजन प्रिंट करना है। उदाहरण Input: 24 Output: 2 2 2 3 2 4 3 8 3 4 6 2 12 इसके लिए, हम एक रिकर्सिव फंक्शन का उपयोग करेंगे जो संख्या के फैक्टर संयोजन ढूंढेगा। और हम अपने सभी संयोजनों को ऐरे ऑफ ऐरे में संग्रहीत करेंगे। उदाहर