well i still believe that the key is the smallest sized pack and there's no need to go into higher mathematics to solve this problem. I think below code works within the limits of the exercise which states to look at a maximum range of 200 in order not to search forever.
packages=[2,103,105] min_size=min(packages[0],packages[1],packages[2]) cbc=0 #cbc=can_buy counter for n_nuggets in range(1,200): if cbc>=min_size: break can_buy=False for a in range (n_nuggets/packages[0]+1): for b in range (n_nuggets/packages[1]+1): for c in range (n_nuggets/packages[2]+1): #print "trying for %d: %d %d %d" % (n_nuggets,a,b,c) if packages[0]*a+packages[1]*b+packages[2]*c==n_nuggets: can_buy=True break if can_buy==True: cbc+=1 else: cbc=0 sol=n_nuggets print sol Baba -- http://mail.python.org/mailman/listinfo/python-list