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

C++ में बाइनरी प्रतिनिधित्व में परिपत्र क्रमपरिवर्तन


मान लीजिए हमारे पास 2 पूर्णांक n और start हैं। हमारा कार्य (0,1,2.....,2^n -1) का कोई भी क्रमपरिवर्तन p निम्नानुसार लौटाना है:

  • p[0] = start
  • p[i] और p[i+1] उनके बाइनरी प्रतिनिधित्व में केवल एक बिट से भिन्न होते हैं।
  • p[0] और p[2^n -1] को भी उनके बाइनरी प्रतिनिधित्व में केवल एक बिट से भिन्न होना चाहिए।

उदाहरण के लिए, यदि इनपुट n = 2 और start = 3 है, तो लौटाई गई सरणी [3,2,0,1] होगी, ये [11,10,00,01] हैं।

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

  • ans एक सरणी है
  • i को 0 से 2^n तक लूप करें
    • start XOR i XOR i/2 को ans में डालें
  • ans लौटाएं

उदाहरण

#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){    cout << "[";    for(int i = 0; i<v.size(); i++){          cout << v[i] << ", ";    }    cout << "]"<<endl; } class Solution { public:    vector<int> circularPermutation(int n, int start) {       vector <int> ans;       for(int i = 0 ; i < 1<<n; i++){          ans.push_back(start ^ i ^(i>>1));       }       return ans;    } }; main(){    Solution ob;    print_vector(ob.circularPermutation(5,3)); }

इनपुट

5 3

आउटपुट

[3, 2, 0, 1, 5, 4, 6, 7, 15, 14, 12, 13, 9, 8, 10, 11, 27, 26, 24, 25, 29, 28, 30, 31, 23, 22, 20, 21, 17, 16, 18, 19, ]

  1. - C++ में अगली संख्या का बाइनरी प्रतिनिधित्व

    इस समस्या में, हमें एक संख्या का बाइनरी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का बाइनरी प्रतिनिधित्व ढूंढना होता है यानी दी गई संख्या में एक जोड़ने के बाद परिणामी संख्या। बाइनरी प्रतिनिधित्व एक संख्या का आधार को आधार 2 में बदलना और संख्या को केवल 0 या 1 का उपयोग करके दर्शाना है। उदाहरण के लि

  1. - C++ में दी गई संख्या का बाइनरी प्रतिनिधित्व

    बाइनरी संख्या बाइनरी संख्या केवल 0 और 1 अंकों से बनी होती है। पुनरावर्ती विधि पुनरावृत्ति का उपयोग करके संख्या को बाइनरी में बदलें: 1, तो संख्या/2 के साथ पुनरावर्ती कॉल करें वापस आते समय संख्या % 2 प्रिंट करें उदाहरण कोड 1) toBinary(number / 2); cout << number % 2; } int ma

  1. - पायथन में जांचें कि किसी संख्या का बाइनरी प्रतिनिधित्व पालिंड्रोम है या नहीं

    मान लीजिए हमारे पास एक संख्या n है। हमें जांचना है कि n का बाइनरी प्रतिनिधित्व पालिंड्रोम है या नहीं। उदाहरण के लिए, यदि n = 9 है, तो आउटपुट True होगा क्योंकि 9 का बाइनरी प्रतिनिधित्व 1001 है जो पालिंड्रोम है। हल करने का तरीका reverse_binary() फ़ंक्शन परिभाषित करें जो बाइनरी बिट्स को उल्टा करता है