Skip to content
Related Articles

Related Articles

Improve Article

Find the total Number of Digits in (N!)N

  • Last Updated : 30 Apr, 2021

Given a number N. The task is to find the total Number of Digits in (N!)^{N}  .
Examples
 

Input: N = 3
Output: 3
If N=3, (3!)3=216, 
So the count of digits is 3

Input: N = 4
Output: 6

 

Approach: 
 

As we know,
log(a*b) = log(a) + log(b)

Consider,
X = log(N!) = log(1*2*3....... * N) 
            = log(1)+log(2)+........ +log(N)

Now, we know that the floor value of log base 10 increased by 1, of any number, gives the number of digits present in that number. That is, number of digits in a number say N will be floor(log10N) + 1.
Therefore, number of digit in (N!)^{N}  will be: 
 

floor(log((N!)^{N}))+1
= floor(N*log10(N!)) + 1
= floor(N*X) + 1.

Below is the implementation of the above approach: 
 

C++




// C++ program to find the total
// Number of Digits in (N!)^N
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the total
// Number of Digits in (N!)^N
int CountDigits(int n)
{
    if (n == 1)
        return 1;
 
    double sum = 0;
 
    // Finding X
    for (int i = 2; i <= n; ++i) {
        sum += (double)log(i) / (double)log(10);
    }
 
    // Calculating N*X
    sum *= (double)n;
 
    // Floor(N*X) + 1
    return ceil(sum); // equivalent to floor(sum) + 1
}
 
// Driver code
int main()
{
    int N = 5;
 
    cout << CountDigits(N);
 
    return 0;
}

Java




// Java program to find the total
// Number of Digits in (N!)^N
import java.io.*;
import java.util.*;
import java.lang.*;
 
class GFG
{
// Function to find the total
// Number of Digits in (N!)^N
public double CountDigits(int n)
{
    if (n == 1)
        return 1;
 
    double sum = 0;
 
    // Finding X
    for (int i = 2; i <= n; ++i)
    {
        sum += ((double)Math.log(i) /
                (double)Math.log(10));
    }
 
    // Calculating N*X
    sum *= n;
 
    // Floor(N*X) + 1
    // equivalent to floor(sum) + 1
    return Math.ceil(sum);
}
 
// Driver code
public static void main(String args[])
{
    GFG g = new GFG();
    int N = 5;
    System.out.println(g.CountDigits(N));
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)

Python3




# Python3 program to find the total
# Number of Digits in (N!)^N
 
import math as ma
def CountDigits(n):
 
    if(n==1):
        return 1
    sum=0
 
    # Finding X
    for i in range(2,n+1):
        sum+=ma.log(i,10)
 
    # Calculating N*X
    sum*=n
 
    # Floor(N*X)+1
    #equivalent to floor(sum) + 1
    return ma.ceil(sum)
 
# Driver code
if __name__=='__main__':
    N=5
    print(CountDigits(N))
 
# This code is contributed by
# Indrajit Sinha.

C#




// C# program to find the total
// Number of Digits in (N!)^N
using System;
 
class GFG
{
// Function to find the total
// Number of Digits in (N!)^N
public double CountDigits(int n)
{
    if (n == 1)
        return 1;
 
    double sum = 0;
 
    // Finding X
    for (int i = 2; i <= n; ++i)
    {
        sum += ((double)Math.Log(i) /
                (double)Math.Log(10));
    }
 
    // Calculating N*X
    sum *= n;
 
    // Floor(N*X) + 1
    // equivalent to floor(sum) + 1
    return Math.Ceiling(sum);
}
 
// Driver code
public static void Main()
{
    GFG g = new GFG();
    int N = 5;
    Console.WriteLine(g.CountDigits(N));
}
}
 
// This code is contributed
// by SoumikMondal

PHP




<?php
// PHP program to find the total
// Number of Digits in (N!)^N
 
// Function to find the total
// Number of Digits in (N!)^N
function CountDigits($n)
{
    if ($n == 1)
        return 1;
 
    $sum = 0;
 
    // Finding X
    for ($i = 2; $i <= $n; ++$i)
    {
        $sum += log($i) / log(10);
    }
 
    // Calculating N*X
    $sum *= $n;
 
    // Floor(N*X) + 1
    return ceil($sum); // equivalent to floor(sum) + 1
}
 
// Driver code
$N = 5;
echo CountDigits($N);
 
// This code is contributed by ajit
?>

Javascript




<script>
// javascript program to find the total
// Number of Digits in (N!)^N    
// Function to find the total
    // Number of Digits in (N!)^N
    function CountDigits(n) {
        if (n == 1)
            return 1;
 
        var sum = 0;
 
        // Finding X
        for (i = 2; i <= n; ++i) {
            sum += (Math.log(i) /  Math.log(10));
        }
 
        // Calculating N*X
        sum *= n;
 
        // Floor(N*X) + 1
        // equivalent to floor(sum) + 1
        return Math.ceil(sum);
    }
 
    // Driver code
     
        var N = 5;
        document.write(CountDigits(N));
 
// This code contributed by aashish1995
</script>
Output: 
11

 

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students




My Personal Notes arrow_drop_up
Recommended Articles
Page :