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>
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