Número de formas de dividir N elementos por igual en un grupo de al menos 2

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

3

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

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