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

C++ में nth Ugly Number ढूंढने वाला प्रोग्राम


मान लीजिए हमारे पास एक संख्या n है; हमें nth ugly number ढूंढना है। जैसा कि हम जानते हैं कि ugly numbers वे संख्याएँ हैं जिनके अभाज्य गुणनखंड केवल 2, 3 और 5 हैं। इसलिए यदि हम 10th ugly number ढूंढना चाहते हैं, तो आउटपुट 12 होगा, क्योंकि पहले कुछ ugly numbers हैं 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 और इसी तरह।

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

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

  1. आकार (n + 1) का एक सरणी v परिभाषित करें।
  2. यदि n 1 के समान है, तो:
    • 1 लौटाएँ
  3. two := 2, three := 3, five := 5
  4. twoIdx := 2, threeIdx := 2, fiveIdx := 2
  5. i := 2 से आरंभ करें, जब i <= n, अपडेट करें (i को 1 से बढ़ाएँ), करें:
    • curr := two, three, और five का न्यूनतम
    • v[i] := curr
    • यदि curr two के समान है, तो:
      • two := v[twoIdx] * 2
      • twoIdx को 1 से बढ़ाएँ
    • यदि curr three के समान है, तो:
      • three := v[threeIdx] * 3
      • threeIdx को 1 से बढ़ाएँ
    • यदि curr five के समान है, तो:
      • five := v[fiveIdx] * 5
      • fiveIdx को 1 से बढ़ाएँ
  6. v[n] लौटाएँ

उदाहरण

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

class Solution {
public:
    int nthUglyNumber(int n) {
        vector<int> v(n + 1);
        if (n == 1) {
            return 1;
        }
        int two = 2, three = 3, five = 5;
        int twoIdx = 2;
        int threeIdx = 2;
        int fiveIdx = 2;
        for (int i = 2; i <= n; i++) {
            int curr = min({two, three, five});
            v[i] = curr;
            if (curr == two) {
                two = v[twoIdx] * 2;
                twoIdx++;
            }
            if (curr == three) {
                three = v[threeIdx] * 3;
                threeIdx++;
            }
            if (curr == five) {
                five = v[fiveIdx] * 5;
                fiveIdx++;
            }
        }
        return v[n];
    }
};

int main() {
    Solution ob;
    cout << (ob.nthUglyNumber(15));
    return 0;
}

इनपुट

15

आउटपुट

24
  1. - C++ में Nवें फाइबोनैचि संख्या के अंतिम दो अंक ढूंढना

    इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य C++ में Nवें फाइबोनैचि संख्या के अंतिम दो अंक ढूंढने के लिए एक प्रोग्राम बनाना है। समस्या विवरण हमें Nवें फाइबोनैचि संख्या के अंतिम दो अंक (यानी दो LSB) ढूंढने हैं। उदाहरण इनपुट: N = 120 आउटपुट: 81 हल का दृष्टिकोण एक सरल समाधान Nवें पद को ढूं

  1. - C++ में बदसूरत संख्या II

    मान लीजिए हमें nth बदसूरत संख्या ढूंढनी है, इसलिए हमें एक विधि परिभाषित करनी है जो इसे ढूंढ सके। जैसा कि हम जानते हैं कि बदसूरत संख्याएं वे संख्याएं हैं जिनके अभाज्य गुणनखंड केवल 2, 3 और 5 हैं।उदाहरण के लिए, यदि हम 10वीं बदसूरत संख्या ढूंढना चाहते हैं, तो वह 12 होगी, क्योंकि पहली कुछ बदसूरत संख्याएं

  1. - C++ प्रोग्राम: संख्या की समता (Parity) को कुशलतापूर्वक ज्ञात करना

    इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो दी गई संख्या N की समता (Parity) ज्ञात करता है। समता को किसी संख्या के बाइनरी प्रतिनिधित्व में सेट बिट्स की संख्या ( 1 की संख्या) के रूप में परिभाषित किया गया है। यदि बाइनरी प्रतिनिधित्व में 1 की संख्या सम है, तो समता को सम समता कहा जाता है और यदि बाइनर