Dada una suma K entonces extrae distintos números positivos que llegan a la suma.
Entrada : K = 17
Salida : [1, 2, 3, 4, 7]
Explicación : la suma de la lista es igual a 17.Entrada : K = 21
Salida : [1, 2, 3, 4, 11]
Explicación : la suma de la lista es igual a 21.
Método #1: Usar bucle
En esto, tomamos los valores más pequeños posibles que pueden llegar a K, para el último valor, restamos el valor restante de K del valor sumado hasta el punto.
Python3
# Python3 code to demonstrate working of # Distinct Positive Integers Sum to K # Using loop # initializing K K = 19 # printing K print("The value of K : " + str(K)) res = [] idx = 0 for ele in range(1, K): idx += ele # checking for last element point if K - idx < ele + 1: # appending initial elements res.extend(list(range(1, ele))) # appending last element left res.append(K - idx + ele) break # printing result print("The Required elements : " + str(res))
The value of K : 19 The Required elements : [1, 2, 3, 4, 9]
Método #2: Usar combinaciones() + sum()
En esto, obtenemos los elementos usando combinaciones(), y verificamos la suma usando la suma, esto no funciona de manera codiciosa sino aleatoria para llegar a la suma requerida.
Python3
# Python3 code to demonstrate working of # Distinct Positive Integers Sum to K # Using combinations() + sum() from itertools import combinations # initializing K K = 19 # printing K print("The value of K : " + str(K)) res = [] flag = 0 for idx in range(K - 1, 0, -1): # forming combinations for sub in combinations(range(1, K), idx): if sum(sub) == K and flag == 0: res.extend(list(sub)) flag = 1 break else: continue break # printing result print("The Required elements : " + str(res))
The value of K : 19 The Required elements : [1, 2, 3, 4, 9]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA