Dado un número entero N que denota el número de elementos, la tarea es encontrar el número de formas de dividir estos elementos por igual en grupos de modo que cada grupo tenga al menos 2 elementos.
Ejemplos:
Entrada: N = 2
Salida: 1
Explicación: Solo puede haber un grupo.Entrada: N = 10
Salida: 3
Explicación: Hay 3 formas de dividir elementos:
Un grupo que tiene los 10 elementos.
Dos grupos donde cada grupo tiene 5 elementos.
Cinco grupos donde cada grupo tiene 2 elementos.
Enfoque: el problema anterior se puede resolver utilizando el enfoque de fuerza bruta que se proporciona a continuación. En cada iteración del bucle, i representa el número de grupos. Si N es completamente divisible por i , entonces, los elementos se pueden dividir igualmente entre grupos. Siga los pasos a continuación para resolver el problema:
- Declare formas variables e inicialícelas en 0.
- Itere sobre el rango [1, N/2] usando la variable i y realice las siguientes tareas:
- Compruebe si N es completamente divisible por i .
- Si es así, entonces incremente las formas en 1 .
- Después de realizar los pasos anteriores, imprima el valor de las vías como respuesta.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the given approach #include <iostream> using namespace std; // Function to find the number of ways int numberofWays(int N) { // Variable to store the number of ways int ways = 0; int i; // Loop to find total number of ways for (i = 1; i <= N / 2; i++) { if (N % i == 0) ways++; } // Returning the number of ways return ways; } // Driver Code int main() { // Declaring and initialising N int N = 10; // Function call int ans = numberofWays(N); // Displaying the answer on screen cout << ans; return 0; }
Java
// Java program for the above approach import java.io.*; import java.lang.*; import java.util.*; class GFG { // Function to find the number of ways static int numberofWays(int N) { // Variable to store the number of ways int ways = 0; int i; // Loop to find total number of ways for (i = 1; i <= N / 2; i++) { if (N % i == 0) ways++; } // Returning the number of ways return ways; } public static void main (String[] args) { // Declaring and initialising N int N = 10; // Function call int ans = numberofWays(N); // Displaying the answer on screen System.out.print(ans); } } // This code is contributed by hrithikgarg03188
Python3
# Python code for the above approach # Function to find the number of ways def numberofWays(N): # Variable to store the number of ways ways = 0; i = None # Loop to find total number of ways for i in range(1, (N // 2) + 1): if (N % i == 0): ways += 1 # Returning the number of ways return ways; # Driver Code # Declaring and initialising N N = 10; # Function call ans = numberofWays(N); # Displaying the answer on screen print(ans); # This code is contributed by Saurabh Jaiswal
C#
// C# program for the above approach using System; class GFG { // Function to find the number of ways static int numberofWays(int N) { // Variable to store the number of ways int ways = 0; int i; // Loop to find total number of ways for (i = 1; i <= N / 2; i++) { if (N % i == 0) ways++; } // Returning the number of ways return ways; } public static void Main(string[] args) { // Declaring and initialising N int N = 10; // Function call int ans = numberofWays(N); // Displaying the answer on screen Console.WriteLine(ans); } } // This code is contributed by ukasp.
Javascript
<script> // JavaScript code for the above approach // Function to find the number of ways function numberofWays(N) { // Variable to store the number of ways let ways = 0; let i; // Loop to find total number of ways for (i = 1; i <= Math.floor(N / 2); i++) { if (N % i == 0) ways++; } // Returning the number of ways return ways; } // Driver Code // Declaring and initialising N let N = 10; // Function call let ans = numberofWays(N); // Displaying the answer on screen document.write(ans); // This code is contributed by Potta Lokesh </script>
3
Complejidad temporal: O(N)
Espacio auxiliar: O(1)