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

सी ++ में बदसूरत संख्या II

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

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

  • आकार n + 1

    . का एक सरणी v बनाएं
  • अगर n =1 है, तो 1 लौटाएं

  • दो:=2, तीन =3 और पांच =5, टो इंडेक्स:=2, थ्रीइंडेक्स:=2 और फाइवइंडेक्स:=2

  • मेरे लिए 2 से n की सीमा में

    • curr :=दो, तीन और पांच का मिनट

    • v[i] :=कर्व

    • अगर curr =दो, तो दो :=v[twoIndex] * 2, दो इंडेक्स को 1 से बढ़ाएं

    • अगर curr =तीन, तो तीन :=v[threeIndex] * 3, तीन इंडेक्स को 1 से बढ़ाएं

    • अगर curr =पाँच, तो पाँच :=v[fiveIndex] * 3, पाँच इंडेक्स को 1 से बढ़ाएँ

  • वापसी v[n]

उदाहरण(C++)

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#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];
   }
};
main(){
   Solution ob;
   cout << (ob.nthUglyNumber(10));
}

इनपुट

10

आउटपुट

12

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में एडम नंबर

    इस खंड में हम देखेंगे कि एक प्रोग्राम कैसे लिखा जाता है जो यह जांच सकता है कि दी गई संख्या एडम नंबर है या नहीं। कोड में गोता लगाने से पहले आइए देखें कि एडम नंबर क्या है? आदम संख्या एक संख्या है मान लीजिए n, तो यदि n का वर्ग और n के विपरीत का वर्ग एक-दूसरे के विपरीत हों, तो वह संख्या आदम संख्या होती