Стандартный кубик даёт целое число от 1 до 6. Посчитайте все непустые упорядоченные последовательности результатов бросков, сумма которых равна target. Разные порядки считаются разными последовательностями. Верните количество таких последовательностей по модулю 1,000,000,007.
Реализуйте функцию dice_combinations(target).
Ввод
target: Требуемая сумма всех бросков.
Вывод
Верните количество последовательностей по модулю 1,000,000,007.
Ограничения
1 ≤ target ≤ 1,000,000. Взятие количества по модулю 1,000,000,007 означает возврат остатка от деления этого числа на 1,000,000,007.
Примеры
Ввод:
target = 2
Ожидаемый вывод:
expected = 2
Ввод:
long long target = 2;
Ожидаемый вывод:
long long expected = 2;
Ввод:
long target = 2;
Ожидаемый вывод:
long expected = 2;
Пояснение
Две последовательности: [2] и [1, 1].
Ввод:
target = 4
Ожидаемый вывод:
expected = 8
Ввод:
long long target = 4;
Ожидаемый вывод:
long long expected = 8;
Ввод:
long target = 4;
Ожидаемый вывод:
long expected = 8;
Пояснение
Последовательности: [4], [1,3], [3,1], [2,2], [1,1,2], [1,2,1], [2,1,1] и [1,1,1,1].
Как подступиться
Сначала попробуйте сами, затем открывайте подсказки по одной.
Подсказка 1
Думайте о меньших суммах как о строительных блоках для целевой суммы.
Подсказка 2
Используйте накопленный счёт для каждой суммы на основе предыдущих шести сумм.
Подсказка 3
Не забывайте применять modulo на каждом сложении и отдельно обрабатывать суммы меньше 1.
Ожидаемая сложность
O(target) по времени, O(target) доп. памяти
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.