Форум » Выполнение и анализ алгоритмов для исполнителей » Задание 14. Помогите! » Ответить

Задание 14. Помогите!

allaalla: Начало Пока нашлось(333) ИЛИ нашлось (555) ЕСЛИ нашлось (555) ТО заменить (555, 3) ИНАЧЕ заменить (333, 5) Конец если Конец пока Конец Что получится если применить к строке состоящей из 146 идущих подряд цифр 5? Мое решение 1) 146: 3=48 пятерок (ост2) 2) 48:8=6? Дальше не понимаю. Ответ в тесте 553355? Как? Покажите ход решения пожалуйста

Ответов - 1

polyakovss: Здравствуйте! Ход решения: 1) «555» среди 146 «5» будут найдены 48 раз и каждый раз будут заменяться на 1 «3». Поэтому сначала 146 «5» превратятся в 48 «3», после которых в строке останутся 2 «5». 2) Зарезервируем 3 «3», чтобы цикл заведомо срабатывал, а с остальными 45 «3» будем работать. 3) 9 «3» превращаются в 3 «5», а те - в 1 «3». В результате количество «3» в строке уменьшается на 8. 4) 45 разделим на 8: получится 5 и 5 в остатке. Значит, после 5 таких циклов останется 5 «3», да еще 3 «3» в резерве. Всего 8 «3», а после них 2 «5». 5) Применим алгоритм к 8 «3»: 6 «3» дадут 2 «5» и 2 «3» останутся, да ещё в конце останутся 2 «5». Получится строка 553355. Ответ: 553355. P.S. У Вас: «48:8=6?». Если при делении остаток равен нулю, то нужно вернуться на один шаг назад. Так, если бы мы не резервировали 3 «3», то при делении 48:8 получили бы 6 и 0 в остатке. Вернуться на один шаг назад означает в данном случае рассмотреть предыдущие 8 «3» и 2 «5» в конце строки, то есть рассмотреть строку 3333333355. Далее тот же пункт 5) и тот же ответ.



полная версия страницы