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

C++ का उपयोग करके केवल विषम अंकों से बनी Nth संख्या ज्ञात कीजिए

सी ++ में गणितीय मुद्दों को हल करने के लिए कार्यों की एक विशाल सूची है। गणितीय कार्यों में से एक कोड का उपयोग करके वां विषम अंक खोजना है। यह लेख विषम Nth संख्या को खोजने के पूर्ण दृष्टिकोण का वर्णन करेगा और यह समझेगा कि विषम संख्याएँ क्या हैं और विषम अंकों से कौन सी संख्याएँ बनती हैं।

केवल विषम अंकों से बनी नौवीं संख्या ढूँढना

विषम संख्याएँ दो से भाग देने पर शेषफल देती हैं, इसलिए पहली कुछ विषम संख्याएँ 1,3,5,7,9,11,13,15,17,19...

हैं

आवश्यक संख्या ज्ञात करने के लिए, हमारे पास यहाँ दो दृष्टिकोण हैं -

दृष्टिकोण 1 - प्रत्येक प्राकृत संख्या की जाँच करें, चाहे वह विषम संख्या है या नहीं और प्रत्येक विषम संख्या के लिए तब तक गिनें जब तक कि गिनती n के बराबर न हो जाए, और यदि संख्या सम हो, अर्थात् सम संख्या को छोड़कर विषम संख्याओं को गिनें तो गिनती न करें। और आवश्यक Nth नंबर देते हुए मिला।

विषम अंकों से बनी Nth संख्या को खोजने का यह तरीका सरल हो सकता है क्योंकि हम हर संख्या की जाँच कर रहे हैं और विषम संख्याओं की गिनती कर रहे हैं, लेकिन कंप्यूटर प्रोग्रामिंग के संदर्भ में, इस दृष्टिकोण को इस कार्य को पूरा करने में अधिक समय लगता है।

दृष्टिकोण 2 - विषम अंकों से बनी प्रत्येक संख्या के अंतिम में 1,3,5,7,9 हो सकते हैं, इसलिए वे विषम संख्याएँ हैं। तो हम पहले जांचते हैं कि क्या वां नंबर 1,3,5,7,9 है यदि हां, तो हमें उत्तर मिलता है; अन्यथा, हम अन्य संभावित संख्याओं की ओर बढ़ते हैं, जो 11.13,15,17,19 हैं और फिर 21,23,25,27,29 आती हैं। यह एक पैटर्न 1 * 10 + {अंतिम संभव संख्या} बनाता है।

उदाहरण

Last possible numbers are 1,3,5,7,9
Next possible numbers can be found by
1 * 10 + 1 =11
1 * 10 + 3 = 13
1 * 10 + 5 = 15
1 * 10 + 7 = 17
1* 10 + 9 = 19
i.e 11,13,15,17,19

नमूना कोड

सबसे पहले, देखते हैं कि कोड कैसा दिखता है -

#include<bits/stdc++.h>
using namespace std;
int main(){
    queue<int> q;
    int cnt = 0, ans = 0;
    int n;
    cin >> n;
    int a[5]={1,3,5,7,9};
    for(int i = 0; i < 5;i++){
        cnt++;
        if(cnt == n)
            ans = a[i];
        q.push(a[i]);
    }
    if(ans)
        cout << ans << "\n";
    else{
        while(true){
            int x = q.front();
            q.pop();
            for(int j = 0; j < 5; j++) {
                int temp = x * 10 + a[j];
                q.push(temp);
                cnt++;
                if(cnt == n)
                    ans = temp;
            }
            if(ans)
                break;
        }
        cout << ans << "\n";
    }
    return 0;
}

आउटपुट

9

(जब हम इनपुट के रूप में 5 प्रदान करते हैं, तो हमें आउटपुट के रूप में 9 मिलते हैं)

उपरोक्त कोड केवल विषम अंकों से बनी Nth संख्या खोजने के लिए C++ कोड है। इस कोड को समझने के लिए, आइए इस कोड को तोड़ें और पूरा कोड समझने के लिए इसके प्रत्येक भाग को समझें।

कोड की व्याख्या

चरण 1 - उपयोगकर्ता से n लेना और आवश्यक चर प्रारंभ करना।

int main() {
   queue<int> q;
   int cnt = 0, ans = 0;
   int n;
   cin >> n;
   int a[5]={1,3,5,7,9};

यहां हम एक कतार बनाते हैं और जवाबों को संग्रहीत करने के लिए गिनती और उत्तर रखने के लिए वेरिएबल cnt को इनिशियलाइज़ करते हैं। साथ ही, हम उपयोगकर्ता से cin का उपयोग करके इनपुट ले रहे हैं और पहले संभावित नंबरों के साथ एक ऐरे को इनिशियलाइज़ कर रहे हैं।

चरण 2 - यह जांचने के लिए कि प्रारंभिक संभावित संख्याओं में Nth नंबर मिलता है या नहीं और उन नंबरों को कतार में संग्रहीत करता है।

for(int i = 0; i < 5;i++){
   cnt++;
   if(cnt == n)
      ans = a[i];
      q.push(a[i]);
   }
   if(ans)
      cout << ans << "\n";

उपरोक्त कोड में, हम जाँच कर रहे हैं कि क्या Nth नंबर पहले संभावित नंबरों में उपलब्ध है, एक ऐरे में स्टोर किया गया है और ऐरे में मौजूद नंबरों के साथ पुश क्यू है, और आउटपुट दे रहा है यदि Nth नंबर पहले संभावित नंबरों में पाया जाता है।

चरण 3 - अगली संभावित संख्याओं में वां नंबर और कतार में बदलते नंबरों को खोजें, अगर एनटी नंबर नहीं मिलता है।

while(true) {
   int x = q.front();
   q.pop();
   for(int j = 0; j < 5; j++) {
      int temp = x * 10 + a[j];
      q.push(temp);
      cnt++;
      if(cnt == n)
         ans = temp;
      }
      if(ans)
         break;
   }
   cout << ans << "\n";
}

अंत में, हम कतार से प्रत्येक संख्या को बाहर निकाल रहे हैं और सूत्र {x * 10 + अंतिम विषम संख्या} का उपयोग करके उसमें से अगली संभावित संख्या बना रहे हैं और जाँच कर रहे हैं कि क्या cnt का मान n के बराबर हो जाता है।

निष्कर्ष

इस लेख में, हमें एक समस्या थी:केवल विषम अंकों से बनी Nth विषम संख्या को कैसे खोजा जाए, और ऐसा करने के लिए हमें दो दृष्टिकोण मिले। पहला तरीका समझने में आसान था क्योंकि यह केवल प्रत्येक संख्या की जाँच कर रहा है और सम संख्याओं को छोड़ रहा है, लेकिन यह गणना करने में समय ले रहा था।

दूसरा दृष्टिकोण एक कतार का उपयोग कर रहा था और उसमें विषम संख्याओं को संग्रहीत कर रहा था और एक सूत्र के साथ अगली संभावित संख्याओं को ढूंढ रहा था, जैसा कि हमने ऊपर देखा है। इस दृष्टिकोण की जटिलता O(n) है।

हमने केवल विषम अंकों से बनी Nth संख्याओं को खोजने के लिए C++ में एक प्रोग्राम बनाया; हम इस प्रोग्राम को किसी अन्य भाषा जैसे सी, पायथन, जावा, या किसी अन्य प्रोग्रामिंग भाषा में कर सकते हैं। आशा है कि आपको यह लेख मददगार लगा होगा क्योंकि यह समस्या को हल करने के दृष्टिकोण का पूरा ज्ञान देता है।


  1. C++ का उपयोग करके पंचकोणीय पिरामिड संख्या ज्ञात कीजिए

    एक पंचकोणीय पिरामिड संख्या एक पंचकोणीय आधार पिरामिड में मदों की संख्या के बराबर होती है। नीचे कुछ पंचकोणीय संख्याओं को देखें। N तक पंचकोणीय संख्याओं का योग Nवीं पंचकोणीय पिरामिड संख्या के बराबर होता है। इस लेख में, हम उदाहरण के लिए, Nth पंचकोणीय पिरामिड संख्या खोजने पर चर्चा करेंगे Input : N = 4

  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क