Dado un número entero N , la tarea es encontrar el número total de números de N dígitos posibles tal que:
- Todos los dígitos de los números son del rango [0, N] .
- No hay ceros iniciales.
- Todos los dígitos de un número son distintos.
Ejemplos:
Entrada: N = 2
Salida: 4
10, 12, 20 y 21 son los únicos
números posibles de 2 dígitos que satisfacen las condiciones dadas.
Entrada: N = 5
Salida: 600
Enfoque: dado N número de dígitos y el primer lugar se puede llenar de N maneras [ 0 no se puede tomar como el primer dígito y los dígitos permitidos son del rango [1, N] ] Los lugares
restantes (N – 1) se pueden llenar en N! maneras
Por lo tanto, la cuenta total de número posible será N * N! .
Tome un ejemplo para una mejor comprensión. Diga, N = 8
¡El primer lugar se puede completar con cualquier dígito de [1, 8] y los 7 lugares restantes se pueden completar con 8! maneras, es decir, 8 * 7 * 6 * 5 * 4 * 3 * 2.
Entonces, ¡formas totales = 8 * 8! = 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 322560
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the factorial of n int fact(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // Function to return the // count of numbers possible int Count_number(int N) { return (N * fact(N)); } // Driver code int main() { int N = 2; cout << Count_number(N); return 0; }
Java
// Java implementation of the approach import java.io.*; class GFG { // Function to return the factorial of n static int fact(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // Function to return the // count of numbers possible static int Count_number(int N) { return (N * fact(N)); } // Driver code public static void main (String[] args) { int N = 2; System.out.print(Count_number(N)); } } // This code is contributed by anuj_67..
Python3
# Python3 implementation of the approach # Function to return the factorial of n def fact(n): res = 1 for i in range(2, n + 1): res = res * i return res # Function to return the # count of numbers possible def Count_number(N): return (N * fact(N)) # Driver code N = 2 print(Count_number(N)) # This code is contributed by Mohit Kumar
C#
// C# implementation of the approach using System; class GFG { // Function to return the factorial of n static int fact(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // Function to return the // count of numbers possible static int Count_number(int N) { return (N * fact(N)); } // Driver code public static void Main () { int N = 2; Console.WriteLine(Count_number(N)); } } // This code is contributed by anuj_67..
Javascript
<script> // Javascript implementation of the approach // Function to return the factorial of n function fact(n) { let res = 1; for (let i = 2; i <= n; i++) res = res * i; return res; } // Function to return the // count of numbers possible function Count_number(N) { return (N * fact(N)); } // Driver code let N = 2; document.write(Count_number(N)); </script>
4
Complejidad temporal: O(n)
Espacio auxiliar: O(1)