Python: números enteros positivos distintos que suman K

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

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *