Задания
Версия для печати и копирования в MS Word
Тип 23 № 13368
i

Ис­пол­ни­тель Плюс пре­об­ра­зу­ет число на экра­не.

У ис­пол­ни­те­ля есть две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра.

1.  При­ба­вить 2.

2.  При­ба­вить 5.

Пер­вая ко­ман­да уве­ли­чи­ва­ет число на экра­не на 2, вто­рая уве­ли­чи­ва­ет это число на 5. Про­грам­ма для ис­пол­ни­те­ля Плюс  — это по­сле­до­ва­тель­ность ко­манд.

Сколь­ко су­ще­ству­ет про­грамм, ко­то­рые число 1 пре­об­ра­зу­ют в число 20?

Спрятать решение

Ре­ше­ние.

Ис­поль­зу­ем метод ди­на­ми­че­ско­го про­грам­ми­ро­ва­ния. Возь­мем мас­сив dp, где dp[i]  — ко­ли­че­ство спо­со­бов по­лу­чить число i из еди­ни­цы с по­мо­щью дан­ных ко­манд.

База ди­на­ми­ки:

dp[1]  =  1.

Пе­ре­ход:

dp[i]  =  dp[i – 2] + dp[i – 5].

Тогда зна­че­ния в нашем мас­си­ве будут сле­ду­ю­щие (от 1 до 20): 1 0 1 0 1 1 1 2 1 3 2 4 4 5 7 7 11 11 16 18.

 

Ответ: 18.

 

При­ведём дру­гое ре­ше­ние на языке Python.

def f(x, y):

if x > y:

return 0

if x == y:

return 1

else:

return f(x + 2, y) + f(x + 5, y)

print(f(1, 20))


Аналоги к заданию № 13368: 11123 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 2017. До­сроч­ная волна
Раздел кодификатора ФИПИ: 1.6.2 Вы­чис­ли­мость. Эк­ви­ва­лент­ность ал­го­рит­ми­че­ских мо­де­лей