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

C++ में आधार B में N! के प्रतिनिधित्व में अनुगामी शून्यों की संख्या


इस लेख में, हम किसी दी गई संख्या N के फैक्टोरियल के आधार B प्रतिनिधित्व में अनुगामी शून्यों को खोजने की समस्या को समझेंगे। उदाहरण के लिए

इनपुट: N = 7 आधार = 2 आउटपुट: 4 व्याख्या: fact(7) = 5040 बेस10 में और 1001110110000 बेस16 में जिसमें 4 अनुगामी शून्य हैं। इनपुट: N = 11 आधार = 5 आउटपुट: 2 व्याख्या: fact(11) = 39916800 बेस10 में और 40204314200 बेस16 में जिसमें 2 अनुगामी शून्य हैं।

आइए पहले किसी भी दशमलव संख्या को एक आधार से दूसरे आधार में बदलने की प्रक्रिया को दोहराते हैं। आइए (5040)10 को (?)2 में बदलने का एक उदाहरण लेते हैं

C++ में आधार B में N! के प्रतिनिधित्व में अनुगामी शून्यों की संख्या

यानी संख्या को 2 से विभाजित करना और शेषफल रखना जब तक संख्या को और विभाजित न किया जा सके। परिणाम उल्टे क्रम में शेषफल होगा।

परिणामस्वरूप, हमें 4 अनुगामी शून्य मिलते हैं, और यह अनुगामी शून्य हमें तब मिला जब 2 संख्या को शेषफल 0 से विभाजित करता है।

5040 का अभाज्य गुणनखंड = 2⁴ × 56711 × 3381 × 181, इसका मतलब 2, 5040 को 4 बार शेषफल 0 से विभाजित करता है जो अनुगामी शून्यों के बराबर है। इस तरह, हम अनुगामी शून्यों की संख्या की गणना कर सकते हैं।

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

हमने ऊपर अनुगामी शून्यों की संख्या खोजने का तरीका चर्चा किया। हमें फैक्टोरियल N में आधार B की उच्चतम घात खोजने की आवश्यकता है, मान लें आधार B = 14, तो 14 आधार 14 में 10 के रूप में दर्शाया जाएगा, यानी (14)10 = (10)14। इसे लेगेंड्रे का सूत्र भी कहा जाता है।

उपरोक्त दृष्टिकोण के लिए C++ कोड

यहां C++ सिंटैक्स है जिसका उपयोग हम दी गई समस्या को हल करने के लिए इनपुट के रूप में कर सकते हैं -

उदाहरण

#include <bits/stdc++.h> using namespace std; vector < pair < int, int >> primeFactorsofBase(int Base) {    // अभाज्य गुणनखंड स्टोर करने के लिए फैक्टर घोषित करना    // आधार के गुणनखंड में घटना के साथ।    vector < pair < int, int >> factors;    for (int i = 2; Base != 1; i++) {       if (Base % i == 0) {          int count = 0;          while (Base % i == 0){             Base = Base / i;             count++;          }          factors.push_back (make_pair (i, count));       }    }    return factors; } int main () {    int N = 11, Base = 5;    // फैक्टोरियल N को विभाजित करने वाले आधार की सबसे बड़ी घात खोजना।    vector < pair < int, int >> prime_factors;    // primeFactorsofBase() फंक्शन द्वारा अभाज्य गुणनखंड खोजना।    prime_factors = primeFactorsofBase(Base);    int result = INT_MAX;    for (int i = 0; i < prime_factors.size (); i++) {       // न्यूनतम घात की गणना।       int count = 0;       int r = prime_factors[i].first;       while (r <= N){          count += (N / r);          r = r * prime_factors[i].first;       }       result = min (result, count / prime_factors[i].second);    }    // परिणाम में स्टोर अनुगामी शून्य प्रिंट करना।    cout << "Number of trailing zeroes: " <<result;    return 0; }

आउटपुट

Number of trailing zeroes: 2

उपरोक्त कोड की व्याख्या

  • वेक्टर का उपयोग करके आधार की सबसे बड़ी घात खोजें।
  • सबसे बड़ी घात की गणना करने के लिए, वेक्टर का उपयोग करके सभी अभाज्य गुणनखंड स्टोर करें।
  • फिर आधार के सभी अभाज्य गुणनखंडों की न्यूनतम घात की गणना करें।
  • अंत में, परिणाम प्रिंट करें।

निष्कर्ष

इस लेख में, हमने आधार B प्रतिनिधित्व में फैक्टोरियल N के अनुगामी शून्यों की संख्या खोजने की समस्या को हल किया, जिसे हम लेगेंड्रे के सूत्र का उपयोग करके हल करते हैं। हमने उसी समस्या को हल करने के लिए C++ कोड भी लिखा। आप इस कोड को Java, C, Python आदि किसी अन्य भाषा में लिख सकते हैं। आशा है आपको यह लेख उपयोगी लगा होगा।

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

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

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

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

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करने के दृष्टिकोणों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृतिक संख्याओं के एक सेट पर, हमें रिफ्लेक्सिव रिलेशंस की संख्या निर्धारित करनी है।रिफ्लेक्सिव रिलेशन - एक सेट A में एक रिलेशन को रिफ्लेक्सिव कहा जाता ह