Dados dos enteros M y N , la tarea es crear una lista de M enteros no negativos cuya suma sea N . En caso de que sea posible más de una lista, busque cualquiera.
Ejemplos:
Entrada: M = 4, N = 8
Salida: 1 3 3 1
1 + 3 + 3 + 1 = 8
Entrada: M = 5, N = 3
Salida: 0 1 1 0 1
Enfoque: para obtener una lista aleatoria completa de enteros, cree una array de tamaño M donde cada elemento se inicialice con 0 . Ahora ejecute un ciclo de 0 a N – 1 e incremente cualquier elemento elegido al azar de la array en 1 usando la función rand() . Así, la suma de la lista resultante será N .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Utility function to print the // elements of an array void printArr(int arr[], int n) { for (int i = 0; i < n; i++) cout << arr[i] << " "; } // Function to generate a list of // m random non-negative integers // whose sum is n void randomList(int m, int n) { // Create an array of size m where // every element is initialized to 0 int arr[m] = { 0 }; srand(time(0)); // To make the sum of the final list as n for (int i = 0; i < n; i++) { // Increment any random element // from the array by 1 arr[rand() % m]++; } // Print the generated list printArr(arr, m); } // Driver code int main() { int m = 4, n = 8; randomList(m, n); return 0; }
Java
// Java implementation of the approach class GFG { // Utility function to print the // elements of an array static void printArr(int arr[], int n) { for (int i = 0; i < n; i++) System.out.print(arr[i] + " "); } // Function to generate a list of // m random non-negative integers // whose sum is n static void randomList(int m, int n) { // Create an array of size m where // every element is initialized to 0 int arr[] = new int[m]; // To make the sum of the final list as n for (int i = 0; i < n; i++) { // Increment any random element // from the array by 1 arr[(int)(Math.random() * m)]++; } // Print the generated list printArr(arr, m); } // Driver code public static void main(String args[]) { int m = 4, n = 8; randomList(m, n); } } // This code is contributed by Arnab Kundu
Python3
# Python3 implementation of the approach from random import randint # Utility function to print the # elements of an array def printArr(arr, n) : for i in range(n) : print(arr[i], end = " "); # Function to generate a list of # m random non-negative integers # whose sum is n def randomList(m, n): # Create an array of size m where # every element is initialized to 0 arr = [0] * m; # To make the sum of the final list as n for i in range(n) : # Increment any random element # from the array by 1 arr[randint(0, n) % m] += 1; # Print the generated list printArr(arr, m); # Driver code if __name__ == "__main__" : m = 4; n = 8; randomList(m, n); # This code is contributed by AnkitRai01
C#
// C# implementation of the approach using System; class GFG { // Utility function to print the // elements of an array static void printArr(int []arr, int n) { for (int i = 0; i < n; i++) Console.Write(arr[i] + " "); } // Function to generate a list of // m random non-negative integers // whose sum is n static void randomList(int m, int n) { // Create an array of size m where // every element is initialized to 0 int [] arr = new int[m]; // To make the sum of the final list as n for (int i = 0; i < n; i++) { // Increment any random element // from the array by 1 Random rnd = new Random(); arr[rnd.Next(0, n) % m]++; } // Print the generated list printArr(arr, m); } // Driver code public static void Main() { int m = 4, n = 8; randomList(m, n); } } // This code is contributed by Mohit kumar
Javascript
<script> // Javascript implementation of the approach // Utility function to print the // elements of an array function printArr(arr,n) { for (let i = 0; i < n; i++) document.write(arr[i] + " "); } // Function to generate a list of // m random non-negative integers // whose sum is n function randomList(m,n) { // Create an array of size m where // every element is initialized to 0 let arr = new Array(m); for(let i=0;i<arr.length;i++) { arr[i]=0; } // To make the sum of the final list as n for (let i = 0; i < n; i++) { // Increment any random element // from the array by 1 arr[(Math.floor((Math.random() * n) )%m)]++; } // Print the generated list printArr(arr, m); } // Driver code let m = 4, n = 8; randomList(m, n); // This code is contributed by patel2127 </script>
Producción:
1 3 3 1
Complejidad del tiempo: O(max(M, N))
Espacio Auxiliar: O(M)