Trouve le plus petit nombre qu’on ne peut pas décomposer en une combinaison linéaire (à coefficients positifs ou nuls) des éléments donnés en argument.
def prod(l): p=1 for e in l: p*=e return p def combilin(s={6,9,13}): if len(s)<=1: raise ValueError("Pas assez de valeurs.") crible=["0"]*prod(s) for e in s: crible[e]="1" S={0} temp={1} while temp: temp=set() E=min(S) S.discard(E) for e in s: i=e+E if i<len(crible): temp.add(i) crible[i]="1" S|=temp return "".join(crible).index("1"*min(s))-1