El siguiente código define una función en Python que tiene como entrada un número entero y lo divide en “grupos” de 5 unidades, de 2 unidades y de 1 unidad. El caso práctico sería, por ejemplo, dividir una cantidad X en sellos de 5p, 2p y 1p, usando el menor número de sellos posible. Para ello he definido la función stamps que recibe un entero y devuelve la tripleta de números. En el código hay que utilizar los comandos para el cociente y el resto de una división en Python:
def stamps(a): if (a % 5) != 0: # Si a no es divisible entre 5 me quedo con su parte entera. p = a // 5 else: return ((a//5),0,0) # Si es divisible entre 5 no necesito otros sellos. n = a - (p*5) # Ahora defino la variable n que es lo que me resta. if (n % 2) != 0: # Si lo que me queda no es divisible entre 2 cojo su parte entera. s = n // 2 else: return (p,(n//2),0) # Me quedo con p sellos de 5p y n/2 sellos de 2p. return p,s,(a-(5*p)-(2*s)) # Si llego aquí, el primero es p, el segundo s, y el tercero lo que me resta.
Algunos resultados de éste código serían los siguientes:
Para la cantidad de 8, harían falta 1 sello de 5p, otro de 2p y uno de 1p. Sin embargo, para la cantidad de 55, al ser múltiplo de 5, sólo sería necesario usar 11 sellos de 5p.