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

C++ में फैक्टोरियल में अंकों की गिनती करें


हमें एक पूर्णांक मान दिया गया है और कार्य पहले एक संख्या का फैक्टोरियल निकालना है और फिर परिणाम में अंकों की कुल संख्या की गणना करना है।

फैक्टोरियल संख्या क्या है

एक संख्या का फैक्टोरियल एक संख्या में अंकों को गुणा करके घटते क्रम में 1 से घटाकर गणना की जाती है। इसे प्रतीक '!' द्वारा दर्शाया जाता है यानी 0!, 1!, 2!, 3!, 5!,....,आदि। 0! और 1! का फैक्टोरियल हमेशा 1 होता है।

यानी 2 का फैक्टोरियल = 2 * (2-1) = 2 * 1 = 2       3 का फैक्टोरियल = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6

उदाहरण के लिए

इनपुट - factorial(6) आउटपुट - factorial(6) में अंकों की संख्या: 3

व्याख्या - चूंकि 6 का फैक्टोरियल मान 720 है और इसमें 3 अंक हैं इसलिए, परिणाम 3 है

इनपुट - factorial(12) आउटपुट- factorial(12) में अंकों की संख्या: 9

व्याख्या - चूंकि 12 का फैक्टोरियल मान 479001600 है और इसमें 9 अंक हैं इसलिए, परिणाम 9 है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • उस संख्या को इनपुट करें जिसका फैक्टोरियल निकालना है।

  • यदि संख्या 0 से कम है तो 0 लौटाएं क्योंकि ऋणात्मक संख्या का कोई फैक्टोरियल मान नहीं होता है

  • यदि संख्या 1 है तो 1 लौटाएं क्योंकि 1! 1 है और इसमें 1 अंक है।

  • यदि संख्या 1 से अधिक है यानी 2 या अधिक से शुरू होती है तो एक लूप बनाएं, 2 से शुरू करके जब तक यह संख्या से कम या बराबर है

  • एक अस्थायी चर लें, मान लीजिए d और इसे लूप के बाहर 0 से आरंभ करें और लूप के अंदर हर i की पुनरावृत्ति तक log10(i) के मान के साथ इसे जोड़ते रहें।

  • उसके बाद, 'floor(d)+1' का फ्लोर मान लौटाएं

  • परिणाम प्रिंट करें।

उदाहरण

#include <iostream>
#include <cmath>
using namespace std;

// यह फंक्शन num! में मौजूद अंकों की संख्या लौटाता है
int count_digits(int num) {
    // फैक्टोरियल केवल तभी मौजूद होता है जब num <= 0
    if (num < 0) {
        return 0;
    }
    // बेस केस
    if (num <= 1) {
        return 1;
    }
    // अन्यथा num के माध्यम से पुनरावृत्ति करें और मान की गणना करें
    double d = 0;
    for (int i = 2; i <= num; i++) {
        d += log10(i);
    }
    return floor(d) + 1;
}

int main() {
    cout << "number of digits in factorial(1) is: " << count_digits(1) << endl;
    cout << "number of digits in factorial(6) is: " << count_digits(6) << endl;
    cout << "number of digits in factorial(106) is: " << count_digits(106) << endl;
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

number of digits in factorial(1) is: 1 number of digits in factorial(6) is: 3 number of digits in factorial(106) is: 171

  1. C++ में आयत में वर्गों की संख्या गिनना C++ में आयत में वर्गों की संख्या गिनना

    =B। लक्ष्य LxB आकार के आयत में समायोजित किए जा सकने वाले वर्गों की संख्या ढूंढना है। उपरोक्त आकृति 3x2 आकार के एक आयत को दर्शाती है। इसमें 2, 2x2 वर्ग और 6, 1x1 वर्ग हैं। कुल वर्ग = 6+2=8। LxB आकार के हर आयत में L*B संख्या के 1x1 वर्ग होते हैं। सबसे बड़े वर्ग BxB आकार के होते हैं। L=B=1 के लिए, वर

  1. - C++ में किसी संख्या के फैक्टोरियल में अंकों का योग ढूंढें

    मान लीजिए, हमारे पास एक संख्या n है, हमारा कार्य n! में अंकों का योग ढूंढना है। n = 5 पर विचार करें, तो n! = 120। तो परिणाम 3 होगा। इस समस्या को हल करने के लिए, हम एक वेक्टर बनाएंगे जो फैक्टोरियल अंकों को स्टोर करेगा और इसे 1 से प्रारंभ करेगा। फिर 1 से n तक एक-एक करके वेक्टर से गुणा करें। अब वेक्ट

  1. - C++ प्रोग्राम: संख्या में उन अंकों की संख्या ज्ञात करना जो संख्या को विभाजित करते हैं

    मान लें कोई संख्या दी गई है। हमें संख्या के उन अंकों की संख्या गिननी है जो संख्या को समान रूप से विभाजित करते हैं। मान लें संख्या 1012 है, परिणाम 3 है। तीन अंक 1, 1, और 2 हैं जो 1012 को समान रूप से विभाजित करते हैं। इसे हल करने के लिए, हम मापांक ऑपरेशन का उपयोग करके संख्या के प्रत्येक अंक को ज्ञात