Количество различных чисел из 'n' чисел; числа только 5 и 9, но максимум 2 цифры подряд напнример(n=3; можно сделать такие числа :559; 599; 995; 959; 955; 595. Но нельзя 555 или 999, но можно 559955 или 995599 и т.д. например: вводится n(3) вывести(6)

19 Апр 2019 в 19:44
236 +1
1
Ответы
1

Для решения этой задачи можно воспользоваться методом динамического программирования. Создадим таблицу dp размера n на 2, где dp[i][0] будет хранить количество чисел из i цифр, заканчивающихся на 5, и dp[i][1] будет хранить количество чисел из i цифр, заканчивающихся на 9.

Инициализируем значения в таблице dp следующим образом:
dp[1][0] = dp[1][1] = 1

Далее, для каждой последующей цифры i от 2 до n, мы можем рассмотреть два случая:

Увеличение числа, заканчивающегося на 5, добавлением цифры 9 в конец. То есть dp[i][0] = dp[i-1][1]Увеличение числа, заканчивающегося на 9, добавлением цифры 5 в конец. То есть dp[i][1] = dp[i-1][0]

Итоговый ответ будет суммой значений dp[n][0] и dp[n][1].

Пример реализации на языке Python:

def countNumbersWithNoConsecutive(n):
dp = [[0, 0] for _ in range(n+1)]
dp[1][0] = dp[1][1] = 1
for i in range(2, n+1):
dp[i][0] = dp[i-1][1]
dp[i][1] = dp[i-1][0]
return sum(dp[n])
n = 3
print(countNumbersWithNoConsecutive(n)) # Output: 6

Таким образом, при n=3 количество различных чисел будет равно 6.

28 Мая 2024 в 18:00
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир