Encuentre el número total de dígitos en (N!)N

Dado un número N. La tarea es encontrar el número total de dígitos en  (¡N!)^{N}      .

Ejemplos

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

Input: N = 4
Output: 6

Acercarse:  

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)

Ahora, sabemos que el valor mínimo del logaritmo en base 10 aumentó en 1, de cualquier número, lo que da la cantidad de dígitos presentes en ese número. Es decir, la cantidad de dígitos en un número digamos N será piso (log 10 N) + 1 . Por lo tanto, el número de dígitos en  (¡N!)^{N}      será: 

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

A continuación se muestra la implementación del enfoque anterior: 

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>
Producción: 

11

 

Complejidad de tiempo: O(n) // n es la longitud de la array.

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por souradeep y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *