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

C++ में बिट्स को पुनर्व्यवस्थित करके संख्या को अधिकतम करना


समस्या कथन

एक अनसाइन्ड संख्या दी गई है, दी गई अनसाइन्ड संख्या के बिट्स का उपयोग करके बनाई जा सकने वाली अधिकतम संख्या ढूंढें।

यदि इनपुट संख्या 8 है तो इसका बाइनरी प्रतिनिधित्व है:

00000000000000000000000000001000

इसे अधिकतम करने के लिए MSB को 1 पर सेट करें। तब संख्या 2147483648 बन जाती है जिसका बाइनरी प्रतिनिधित्व है:

10000000000000000000000000000000

एल्गोरिदम

1. दी गई संख्या के बाइनरी प्रतिनिधित्व में सेट बिट्स की संख्या गिनें।
2. n कम से कम सार्थक सेट बिट्स वाली संख्या ढूंढें।
3. संख्या को (32 - n) से बाएं शिफ्ट करें।

उदाहरण

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

unsigned getMaxNumber(unsigned num) {
    int n = __builtin_popcount(num);
    if (n == 32) {
        return num;
    }
    unsigned result = (1 << n) - 1;
    return (result << (32 - n));
}

int main() {
    unsigned n = 8;
    cout << "Maximum number = " << getMaxNumber(n) << endl;
    return 0;
}

आउटपुट

Maximum number = 2147483648
  1. - C++ में लंबाई p, q और r के सेगमेंट्स की संख्या को अधिकतम करना

    समस्या कथन लंबाई L की एक रॉड दी गई है, कार्य रॉड को इस तरह काटना है कि लंबाई p, q और r के सेगमेंट्स की कुल संख्या अधिकतम हो। सेगमेंट्स केवल लंबाई p, q, और r के हो सकते हैं। यदि l = 15, p = 2, q = 3 और r = 5 तो हम 7 सेगमेंट्स बना सकते हैं: {2, 2, 2, 2, 2, 2, 3} एल्गोरिदम हम इस समस्या को डायनामिक प

  1. - C++ में ऐरे की माध्यिका को अधिकतम करना

    समस्या कथन N तत्वों का एक ऐरे arr[] और एक पूर्णांक K दिया गया है जहां K < N। कार्य उसी ऐरे में K पूर्णांक तत्व डालना है ताकि परिणामी ऐरे की माध्यिका अधिकतम हो। यदि इनपुट ऐरे है {1, 3, 2, 5} और k = 3 तो: सॉर्टेड ऐरे बन जाता है {1, 2, 3, 5} 5 से बड़े 3 तत्व डालें। इस ऑपरेशन के बाद ऐरे बन जाता है {1

  1. - C++ में k सेट बिट्स के साथ नंबर को अधिकतम करने के लिए न्यूनतम फ्लिप्स

    समस्या कथनदो नंबर n और k दिए गए हैं, हमें दिए गए नंबर को उसके बिट्स फ्लिप करके अधिकतम करने के लिए आवश्यक न्यूनतम फ्लिप्स की संख्या ढूंढनी है जैसे कि परिणामी नंबर में ठीक k सेट बिट्स हों। कृपया ध्यान दें कि इनपुट को कंडीशन पूरी करनी चाहिए कि k, n में बिट्स की संख्या से कम हो।उदाहरणमान लीजिए n = 9 और