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

सी ++ में एक फैक्टोरियल में अंकों की गणना करें

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

फैक्टोरियल नंबर क्या है

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

I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2
      factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6

उदाहरण के लिए

Input − factorial(6)
Output − number of digits in factorial(6) is: 3

स्पष्टीकरण - चूंकि 6 का भाज्य मान 720 है और इसमें 3 अंक हैं, इसलिए परिणाम 3

. है
Input − factorial(12)
Output− number of digits in factorial(12) is: 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;
// This function returns the number of digits present in num!
int count_digits(int num){
   // factorial exists only if num <= 0
   if (num < 0){
      return 0;
   }
   // base case
   if (num <= 1){
      return 1;
   }
   // else iterate through num and calculate the
   // value
   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++ में एक आयत में वर्गों की संख्या गिनें

    =B. लक्ष्य उन वर्गों की संख्या का पता लगाना है जिन्हें LXB आकार का एक आयत समायोजित कर सकता है। ऊपर दिया गया चित्र 3 X 2 आकार का एक आयत दिखाता है। इसमें 2, 2X2 वर्ग और 6,1X1 वर्ग हैं। कुल वर्ग=6+2=8. LXB आकार के प्रत्येक आयत में L*B संख्या 1X1 वर्ग होती है। सबसे बड़े वर्ग BXB आकार के होते ह

  1. C++ में किसी संख्या के भाज्य में अंकों का योग ज्ञात कीजिए

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

  1. C++ में संख्या को विभाजित करने वाली संख्या में अंकों की संख्या ज्ञात कीजिए

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