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

C++ में पावरफुल इंटीजर्स

मान लीजिए हमारे पास तीन पूर्णांक 'a' और 'b' और 'limit' हैं। कार्य [a, limit] रेंज में संख्याओं को प्रिंट करना है। इन संख्याओं की सूची को पावरफुल इंटीजर्स कहा जाता है और इसे इस प्रकार दर्शाया जाता है,

a^i + b^j जैसे कि i >= 0 और j >= 0

उदाहरण के लिए

इनपुट-1:

a = 2
b = 5
limit = 10

आउटपुट:

[2, 3, 4, 5, 6, 7, 9]

व्याख्या: प्रत्येक i और j के लिए,

                       2^0 + 5^0 = 2   , 2^0 + 5^1= 6

                       2^1 + 5^0 = 3   , 2^1 + 5^1= 7

                       2^2 + 5^0 =5    , 2^3 + 5^0= 9

इस समस्या को हल करने का दृष्टिकोण

इस विशेष समस्या को हल करने का ब्रूट फोर्स दृष्टिकोण यह है कि हम दो नेस्टेड लूप लेंगे और लिमिट तक पुनरावृति करेंगे। फिर हम ऊपरी सीमा में प्रत्येक एक्सपोनेंट के लिए दो संख्याओं का योग ढूंढेंगे और परिणामी संख्या को लिस्ट में डालेंगे।

  • तीन संख्याएं 'a', 'b' और 'limit' लें।
  • एक फ़ंक्शन powerfulnumbers(int a, int b, int limit) संख्याओं 'a', 'b' और 'limit' को इनपुट के रूप में लेता है। फ़ंक्शन उन सभी पावरफुल नंबरों की सूची लौटाता है जैसे कि a^i + b^j जहां i >= 0 और j >= 0।
  • लिमिट तक दो नेस्टेड लूप लें और हर बार, अपने इंडेक्स के साथ गुणा करके पावरफुल नंबर ढूंढें।
  • यदि संख्या [a, limit] रेंज के बीच है, तो संख्या को एक सेट में स्टोर करें (संख्याओं के डुप्लिकेट से बचने के लिए)।
  • सेट पर पुनरावृति करें और आउटपुट प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void powerfulNum(int a, int b, int limit) {
    set < int > s;
    for (int i = 1; i < limit; i *= a) {
        for (int j = 1; j < limit; j *= b) {
            if (i + j <= limit) {
                s.insert(i + j);
            } else break;
            if (b == 1) break;
        }
        if (a == 1) break;
    }
    for (auto it: s) {
        cout << it << " ";
    }
}
int main() {
    int a = 2;
    int b = 5;
    int limit = 10;
    powerfulNum(a, b, limit);
    return 0;
}

उपरोक्त कोड चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

2 3 5 6 7 9

यहां, 2 से 10 की रेंज में सभी पावरफुल नंबर [2, 3, 4, 6, 7, 9] हैं।

  1. - C++ में स्ट्रिंग से सभी इंटीजर्स निकालना

    यहां हम देखेंगे कि C++ में स्ट्रिंग्स से सभी इंटीजर्स कैसे निकालें। हम एक स्ट्रिंग रख सकते हैं जहां नंबर और नॉन-नंबर्स मौजूद हैं। हम इससे सभी न्यूमेरिक वैल्यू निकालेंगे। इस समस्या को हल करने के लिए, हम C++ में stringstream क्लास का उपयोग करेंगे। हम स्ट्रिंग को वर्ड दर वर्ड काटेंगे और फिर इसे इंटीजर

  1. - C++ में नंबर स्ट्रिंग को इंटीजर में बदलना

    यहां हम देखेंगे कि नंबर स्ट्रिंग को इंटीजर टाइप डेटा में कैसे बदलें। हम इस समस्या को atoi() फंक्शन का उपयोग करके हल कर सकते हैं। यह फंक्शन स्ट्रिंग को इनपुट के रूप में लेता है और इसे इंटीजर डेटा में बदलता है। atoi() फंक्शन लाइब्रेरी में मौजूद है। इनपुट: एक नंबर स्ट्रिंग 1234 आउटपुट: 1234 एल्गोरिद

  1. - पायथन में शक्तिशाली पूर्णांक

    = 0 के लिए x^i + y^j के बराबर है। हमें उन सभी शक्तिशाली पूर्णांकों की सूची ढूंढनी है जिनका मान बाउंड से कम या बराबर है। तो, यदि इनपुट x = 2 और y = 3 और बाउंड 10 है, तो आउटपुट [2,3,4,5,7,9,10] होगा, जैसे 2 = 2^0 + 3^0, 3 = 2^1 + 3^0, 4 = 2^0 + 3^1, 5 = 2^1 + 3^1, 7 = 2^2 + 3^1, 9 = 2^3 + 3^0, 10 = 2