"""PROBLEME du rendu de monnaie"""


"""----------ALGO glouton pour rendre la monnaie, avec flottants-------------"""

p0=[2,1,0.50,0.20,0.10,0.05]    #liste des pièces disponibles en euros par valeur décroissante
m0=1.45  #somme à rendre en euros

def monnaie_flottants_glouton(aRendre,pieces):
    nombrepieces=0
    rendu=[0 for x in pieces]
    for i in range(len(pieces)):
        rendu[i]=int(aRendre//pieces[i])              #la somme à rendre est un flottant
        aRendre=round(aRendre-rendu[i]*pieces[i],2)   #arrondi au centième du flottant
        nombrepieces=nombrepieces+rendu[i]  
    return rendu,nombrepieces

"""------ALGO glouton pour rendre la monnaie, sans flottants---------------------"""

p=[200,100,50,20,10,5]   #liste des pièces disponibles en centimes d'euros par valeur décroissante
m=135   #somme à rendre en centimes d'euros

def monnaie_glouton(aRendre,pieces):
    nombrePieces=0
    rendu=[0 for x in pieces]   #on crée une liste "rendu" avec le bon nombre d'éléments, tous égaux à zéro.
    for i in range(len(pieces)):
        rendu[i]=aRendre//pieces[i]  #on calcule le nombre de chaque pièce necessaire en commençant par "la plus grosse"
        aRendre=aRendre%pieces[i]    #on calcule la somme restante
        nombrePieces=nombrePieces+rendu[i]   #on compte le nombre de pièces
    return rendu,nombrePieces                    #on retourne la liste des pièces pour rendre la monnaie et le nombre total de pièces

"""----- ALGO pour lister exhaustivement toutes les combinaisons possibles de pièces pour rendre la monnaie-------"""

def monnaie_possible(m,pieces):
    s=[m//x for x in pieces]  #liste du nombre maximum de chaque pièce dans la monnaie
    t=[]
    for a in range(s[0]+1):
        for b in range(s[1]+1):
            for c in range(s[2]+1):
                for d in range(s[3]+1):
                    for e in range(s[4]+1):
                        for f in range(s[5]+1):
                            if f*pieces[5]+e*pieces[4]+d*pieces[3]+c*pieces[2]+b*pieces[1]+a*pieces[0]==m: 
                                t.append([a,b,c,d,e,f])
    return t,len(t)
       
        



    





