हमें एक पूर्णांक मान दिया गया है और कार्य पहले एक संख्या का फैक्टोरियल निकालना है और फिर परिणाम में अंकों की कुल संख्या की गणना करना है।
फैक्टोरियल संख्या क्या है
एक संख्या का फैक्टोरियल एक संख्या में अंकों को गुणा करके घटते क्रम में 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