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

Ис­пол­ни­тель Ре­дак­тор по­лу­ча­ет на вход стро­ку цифр и пре­об­ра­зо­вы­ва­ет её. Ре­дак­тор может вы­пол­нять две ко­ман­ды, в обеих ко­ман­дах v и w обо­зна­ча­ют це­поч­ки цифр.

за­ме­нить (v, w)

на­шлось (v)

Дана про­грам­ма для ис­пол­ни­те­ля Ре­дак­тор:

НА­ЧА­ЛО

ПОКА на­шлось (19) ИЛИ на­шлось (299) ИЛИ на­шлось (3999)

ЕСЛИ на­шлось (19)

ТО за­ме­нить (19, 2)

КОНЕЦ ЕСЛИ

ЕСЛИ на­шлось (299)

ТО за­ме­нить (299, 3)

КОНЕЦ ЕСЛИ

ЕСЛИ на­шлось (3999)

ТО за­ме­нить (3999, 1)

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

 

Какая стро­ка по­лу­чит­ся в ре­зуль­та­те при­ме­не­ния при­ведённой ниже про­грам­мы к стро­ке, со­сто­я­щей из 1 и 100 иду­щих под­ряд цифр 9? В от­ве­те за­пи­ши­те по­лу­чен­ную стро­ку.

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

Ре­ше­ние.

Дан­ный ал­го­ритм сна­ча­ла за­ме­нит 19 на 2, затем 299 на 3, затем 3999 на 1. То есть на каж­дом шаге ал­го­рит­ма уда­ля­ют­ся шесть де­вя­ток.

По­сколь­ку 100 де­вя­ток об­ра­зу­ют 16 групп по 6 де­вя­ток и ещё 4 де­вят­ки, по­лу­чим стро­ку: 19999 де­вя­ток.

По­след­ние пре­об­ра­зо­ва­ния стро­ки: 19999 → 2999 → 39.

 

Ответ: 39.

 

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

s = '1' + '9' * 100

while ('19' in s) or ('299' in s) or ('3999' in s):

if '19' in s:

s = s.replace('19', '2', 1)

if '299' in s:

s = s.replace('299', '3', 1)

if '3999' in s:

s = s.replace('3999', '1', 1)

print(s)

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