Encuentra el último dígito en factorial

Dado un número n, necesitamos encontrar el último dígito en el factorial n.

Entrada: n = 4
Salida: 4
4! = 4 * 3 * 2 * 1. = 24. El último dígito de 24 es 4.

Entrada: n = 5
Salida: 5
5! = 5*4 * 3 * 2 * 1. = 120. El último dígito de 120 es 0.

Una solución ingenua es calcular primero fact = n!, luego devolver el último dígito del resultado haciendo fact % 10. Esta solución es ineficiente y provoca un desbordamiento de enteros incluso para un valor ligeramente grande de n.

Una solución eficiente se basa en la observación de que todos los factoriales después de 5 tienen 0 como último dígito.

1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
…………..

C++

// C++ program to find last digit in
// factorial n.
#include <iostream>
using namespace std;
 
int lastDigitFactorial(unsigned int n)
{
   // Explicitly handle all numbers
   // less than or equal to 4
   if (n == 0) return 1;
   else if (n <= 2) return n;
   else if (n == 3) return 6;
   else if (n == 4) return 4;
   
   // For all numbers greater than 4
   // the last digit is 0
   else return 0;
}
 
int main() {
 
    cout<<lastDigitFactorial(6);
    return 0;
}

Java

// Java program to find last 
// digit in factorial n.
import java.io.*;
import java.util.*;
 
class GFG {
     
static int lastDigitFactorial(int n)
{
     
    // Explicitly handle all numbers
    // less than or equal to 4
    if (n == 0) return 1;
    else if (n <= 2) return n;
    else if (n == 3) return 6;
    else if (n == 4) return 4;
     
    // For all numbers greater than
    // 4 the last digit is 0
    else return 0;
}
 
// Driver code
public static void main(String[] args)
{
    System.out.println(lastDigitFactorial(6));
}
}
 
// This code is contributed by coder001

Python3

# Python3 program to find last digit in
# factorial n.
 
def lastDigitFactorial(n):
     
    # Explicitly handle all numbers
    # less than or equal to 4
    if (n == 0): return 1
    elif (n <= 2): return n
    elif (n == 3): return 6
    elif (n == 4): return 4
     
    # For all numbers greater than 4
    # the last digit is 0
    else: return 0
 
print(lastDigitFactorial(6))
 
# This code is contributed by divyeshrabadiya07

C#

// C# program to find last
// digit in factorial n.
using System;
class GFG{
     
static int lastDigitFactorial(int n)
{
     
    // Explicitly handle all numbers
    // less than or equal to 4
    if (n == 0) return 1;
    else if (n <= 2) return n;
    else if (n == 3) return 6;
    else if (n == 4) return 4;
     
    // For all numbers greater than
    // 4 the last digit is 0
    else return 0;
}
 
// Driver code
public static void Main(string[] args)
{
    Console.Write(lastDigitFactorial(6));
}
}
 
// This code is contributed by rutvik_56

Javascript

<script>
 
// JavaScript program to find last digit in
// factorial n.
 
function lastDigitFactorial(n)
{
    // Explicitly handle all numbers
    // less than or equal to 4
    if (n == 0) return 1;
    else if (n <= 2) return n;
    else if (n == 3) return 6;
    else if (n == 4) return 4;
     
    // For all numbers greater than 4
    // the last digit is 0
    else return 0;
}
 
    // Driver code 
    document.write(lastDigitFactorial(6));
     
// This code is contributed by Surbhi Tyagi
 
</script>
Producción: 

0

 

Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)

Ahora intente debajo de los problemas

1) Último dígito distinto de cero en factorial
2) Cuenta ceros en factorial
3) Primer dígito en factorial

Publicación traducida automáticamente

Artículo escrito por kartik 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 *