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

C++ में रीऑर्डर्ड पावर ऑफ 2 (Reordered Power of 2)


मान लीजिए हमारे पास एक धनात्मक पूर्णांक N है, हम अंकों को किसी भी क्रम में पुनर्व्यवस्थित करते हैं (मूल क्रम सहित) जैसे कि अग्रणी अंक गैर-शून्य हो। हमें जांचना है कि क्या हम ऐसा कर सकते हैं कि परिणामी संख्या 2 की घात हो।

उदाहरण के लिए, यदि संख्या 46 है, तो उत्तर true होगा (64 = 2⁶)।

समाधान दृष्टिकोण

  1. count() विधि: अंकों की आवृत्ति को 10^अंक के योग के रूप में एन्कोड करें

  2. x := count(N) की गणना करें

  3. i को 0 से 31 तक: यदि count(2ⁱ) == x तो true लौटाएं

  4. false लौटाएं

C++ कार्यान्वयन

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

class Solution { 
public: 
    int count(int x){ 
        int ret = 0; 
        while(x){ 
            ret += pow(10, x % 10); 
            x /= 10; 
        } 
        return ret; 
    } 
    
    bool reorderedPowerOf2(int N) { 
        int x = count(N); 
        for(int i = 0; i < 32; i++){ 
            if(count(1 << i) == x) return true; 
        } 
        return false; 
    } 
}; 

int main(){ 
    Solution ob; 
    cout << (ob.reorderedPowerOf2(812)); 
    return 0; 
}

इनपुट

812

आउटपुट

1
  1. - C++ में टेम्पलेट मेटाप्रोग्रामिंग

    जब हम टेम्पलेट का उपयोग करके कंपाइल टाइम पर गणना करने के लिए प्रोग्राम लिखते हैं, तो इसे टेम्पलेट मेटाप्रोग्रामिंग कहा जाता है।उदाहरण कोड#include <iostream> using namespace std; template<int n>struct power {    enum { value = 4*power<n-1>::value }; }; template<>stru

  1. - C++ प्रोग्राम: संख्या की घात की गणना करें

    परिचयकिसी संख्या की घात की गणना x^y के रूप में की जा सकती है जहां x संख्या है और y उसकी घात है। उदाहरण के लिए, x = 2 और y = 10, तो x^y = 1024। संख्या की घात की गणना रिकर्सिव और नॉन-रिकर्सिव प्रोग्राम का उपयोग करके की जा सकती है। दोनों नीचे दिए गए हैं। नॉन-रिकर्सिव प्रोग्राम का उपयोग करके संख्या की घ

  1. - पायथन में पुनर्क्रमित 2 की घात ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास एक धनात्मक पूर्णांक N है, हम अंकों को किसी भी क्रम में (मूल क्रम सहित) इस तरह पुनर्व्यवस्थित करते हैं कि अग्रणी अंक शून्येतर हो। हमें जांचना है कि क्या हम ऐसा कर सकते हैं कि परिणामी संख्या 2 की घात हो। इसलिए, यदि इनपुट है N = 812, तो आउटपुट True होगा। इसे हल करने के लिए, हम निम्