Как "разбить" число на сумму чисел?

Например, есть число 3894

Как его вывести в print таким образом:

1000
1000
1000
500
100
100
100
50
10
10
10
10
1
1
1
1

Числа такие: 1, 5, 10, 50, 100, 500, 1000


Ответы (1 шт):

Автор решения: Павел

Возможно, это не самое элегантное решение, но в принципе можно "в лоб" написать простенькую функцию, которая будет дробить число, пока это возможно:

def divide_number(number: int, numbers_to_divide: list) -> list:
    if number <= 0:
        return [number]
    divide_numbers = []
    for divide_number in numbers_to_divide:
        while number >= divide_number:
            number -= divide_number
            divide_numbers.append(divide_number)
    return divide_numbers


number = 3894
numbers_to_divide = [1000, 500, 100, 50, 10, 5, 1]

result = divide_number(number, numbers_to_divide)
print(*result, sep='\n')

Вывод:

1000
1000
1000
500
100
100
100
50
10
10
10
10
1
1
1
→ Ссылка