Qual a lógica necessária para obter as moedas utilizadas em meu algoritmo?

Estou analisando um algoritmo que retorna o número minímo de moedas a serem utilizadas a partir de um valor em centavos.

def numero_moedas(centavos):     if centavos < 1:         return 0      moedas = [50, 25, 10, 5, 1]     n_moedas = 0      for moeda in moedas:         n_moedas += centavos // moeda         centavos = centavos % moeda         if centavos == 0:             break      return n_moedas 

Porém, necessito que seja exibida quais foram as moedas utilizadas dentre o número minímo de moedas. Por exemplo:

In[1]: numero_moedas(31) Out[1]: 3, [25, 5, 1] 

Qual seria a lógica necessária para obter essa lista de moedas utilizadas?