Помогите решить задачу на python c помощью вложенных циклов: Требуется определить количество способов выплаты n рублей монетами по 1, 2, 5 и 10 рублей.
Формат входных данных
На вход программе дается одно натуральное число n (n≤99).
Формат выходных данных
Требуется вывести одно число — ответ на задачу.
входные данные
13
выходные данные
16
входные данные
42
выходные данные
220
входные данные
5
выходные данные
4
Python
PYTHON! Требуется определить количество способов выплаты n рублей монетами по 1, 2, 5 и 10 рублей.
Тут вложенные циклы надо начинать с самых крупных монет в порядке убывания их номиналов. А вообще-то задачи перечислительной комбинаторики не для Питона -на нём же всё медленно, а у комбинаторных задач на размен монетами или купюрами может быть довольно таки большАя временнАя сложность! Код внизу для небольших n можно проверить вручную -там всё работает корректно и практически мгновенно, а как его ещё больше оптимизировать для бОльших n чем у меня -пока не вижу, но когда я с телефона код запустила для n=666, у меня получилось 512550, а считалось всё это более трёх минут. На нормальном компьютере всё быстрее, естественно, но алгоритм всё равно ведь сложный черезчур!


Принцип решения вложенными циклами угадывается. Громоздко только будет наверное...
Например для входных данных 5 результат 4
Счетчик изначально равен нулю.
Массив равен [1,2,5,10]
Требуется получить это:
1+1+1+1+1=5
1+2+2=5
5=5
1+1+1+2=5
Внешний цикл берет первый элемент 1. Внутренний цикл до пяти раз пробегает по массиву и складывает элементы пока не получилось 5
1+2+2=5? Ага, прерываем цикл и плюсуем счетчик на 1. Переходим к следущему элементу.
1+5 > 5
1+10 > 5
Пролет...
Переходим к элементу 2
2+1+1+1= 5. Ага... Плюсуем счетчик
2+1+2=5 ...плюсуем счетчик
2+5>5 ...мимо
Например для входных данных 5 результат 4
Счетчик изначально равен нулю.
Массив равен [1,2,5,10]
Требуется получить это:
1+1+1+1+1=5
1+2+2=5
5=5
1+1+1+2=5
Внешний цикл берет первый элемент 1. Внутренний цикл до пяти раз пробегает по массиву и складывает элементы пока не получилось 5
1+2+2=5? Ага, прерываем цикл и плюсуем счетчик на 1. Переходим к следущему элементу.
1+5 > 5
1+10 > 5
Пролет...
Переходим к элементу 2
2+1+1+1= 5. Ага... Плюсуем счетчик
2+1+2=5 ...плюсуем счетчик
2+5>5 ...мимо
если ты не знаешь, что такое вложенные циклы - тебе никто не поможет.
Владимир Васильев
Проще через динамическое вроде
Похожие вопросы
- Дан список чисел. Нужно посчитать количество их "пар" (т.е. "1 1 1 1 1" = 10, "1 2 3 2 3" = 2 и т.д.) (Python)
- Найти сумму n-го количества элементов ряда 1, -0.5, 0.25, -0.125, …
- С клавиатуры вводится число n. Вычислить сумму S=1/1+1/2+1/3+...+1/n.
- Python. Как узнать количество попыток для происхождения удачного события, вероятность которого равна 0,1632%?
- В доме N подъездов, в каждом из них M этажей, на каждом этаже K квартир. Определить, в каком подъезде.. Решите на python
- Python Имеется неупорядоченный массив из n различных целых чисел от 0 до n (0,1,…,j-1,j+1,….,n).
- 1,7^2 = 2.8899999999999997 ? Или умножение в Python
- Есть ли способ вывести случайное число не используя модуль random в python
- Python.Какой функцией можно вывести КОЛИЧЕСТВО четных элементов в массиве?
- Родители Лизы подключили пакет, содержащий N телевизионных каналов, пронумерованных числами от 1 до N