Какая строка получится в результате применения приведенной
Задание ЕГЭ по информатике
Линия заданий — 12
Наслаждайтесь интересным учебником и решайте десятки тестов на Studarium,
мы всегда рады вам! =)
19043. Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
заменить (v, w)
нашлось (v)
Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (333) ИЛИ нашлось (555) ЕСЛИ нашлось (555) ТО заменить (555, 3) ИНАЧЕ заменить (333, 5) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 69 идущих подряд цифр 5? В ответе запишите полученную строку.
Проверить Показать подсказку
Верный ответ: 553
P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке 😉
При обращении указывайте id этого вопроса — 19043.
Понятная информатика,
В части 2 практикума рассматриваются задачи, в которых порядок условий проверки в цикле НЕ совпадает с порядком их проверки в операторе ЕСЛИ. Поэтому решение этой части задач выполняется иначе.
Обратим внимание, что здесь сначала заменяются цифры 5, из которых состоит строка, на цифры 3 (при этом изменяется их количество, кратное 3 – по количеству цифр в условии замены), и только потом задача решается, как и в части 1 практикума. Остаток от деления на 3 (количество оставшихся цифр 5) и в решении будет дописываться в конец числа при делении на 9. Второй способ решения здесь рассматривать не будем. Цифры 5 и 3 здесь взяты на примере задачи 1473!
При возникновении вопросов обращайтесь на почту v_zvezdina@mail.ru, сайт звездина.рус, где можно пройти онлайн-тестирование по теме, или в онлайн-школу, разберемся в переписке или дистанционно в онлайн-режиме.
Задача 1473
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
Дана программа для исполнителя Редактор:
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 65 идущих подряд цифр 5? В ответе запишите полученную строку.
Первым действием в этих задачах будет:
65(5) / 3 =21(3) (+ 2(5), которые допишутся в конец решения
И далее задача решается, как в части 1 практикума:
21(3)/ 9 = 2(3) + 3(3) = 5(3) = 1(5) + 2(3) .
Добавим в конец полученного ответа остаток от деления исходного числа на 3 и получаем:
65(5) = 1(5) + 2(3) + 2(5) => 53355
Задача 1475
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 62 идущих подряд цифр 5?В ответе запишите полученную строку.
62(5) / 3 =20(3) (+ 2(5), которые допишутся в конец решения
И далее задача решается, как в части 1 практикума:
20(3)/ 9 = 2(3) + 2(3) = 4(3) = 1(5) + 1(3) .
Добавим в конец полученного ответа остаток от деления исходного числа на 3 и получаем:
65(5) = 1(5) + 1(3) + 2(5) => 5355
Задача 1487
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (555) ИЛИ нашлось (888)
ПОКА нашлось (555)
ПОКА нашлось (888)
Дана строка, состоящая из 21 цифры, причем первые девять цифр – восьмерки, а остальные – пятерки. В ответе запишите полученную строку.
В этом алгоритме используется вложенный цикл, внутри которого – два раздельных цикла. При этом первым циклом все пятерки меняются на восьмерки, а во втором – наоборот. Алгоритм работает, пока выполняется условие внешнего цикла.
12(5) = 4(8) = 58
Задачи для самостоятельного решения
Задача 1477
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 72 идущих подряд цифр 5?В ответе запишите полученную строку.
Задача 1479
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 93 идущих подряд цифр 5? В ответе запишите полученную строку.
Задача 1481
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 146 идущих подряд цифр 5? В ответе запишите полученную строку.
Задача 1483
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 156 идущих подряд цифр 5?В ответе запишите полученную строку.
Задача 10477
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Дана программа для исполнителя Редактор:
ПОКА нашлось (999) ИЛИ нашлось (888)
ЕСЛИ нашлось (888)
ТО заменить (888, 9)
ИНАЧЕ заменить (999, 8)
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 1000 идущих подряд цифр 8?
В ответе запишите полученную строку.
Какая строка получится в результате применения приведённой ниже программы к строке,
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из цифры 1, за которой следуют 80 идущих подряд цифр 8? В ответе выведите полученную строку.
НАЧАЛО
ПОКА нашлось (18) ИЛИ нашлось (288) ИЛИ нашлось (3888)
ЕСЛИ нашлось (18)
ТО заменить (18, 2)
ИНАЧЕ ЕСЛИ нашлось (288)
ТО заменить (288, 3)
ИНАЧЕ заменить (3888, 1)
КОНЕЦ ЕСЛИ
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Какая строка получится в результате применения программы к этой строке?
Исполнитель Редактор получает на вход строку цифр и преобразовывает еѐ. Редактор может выполнять.
Определить, какая числовая последовательность получится в результате выполнения 3 итерации во внутреннем цикле
1. Какая числовая последовательность получится в результате выполнения 3 итерации во внутреннем.
Что получится в результате выполнения программы?
Что получится в результате выполнения программы? Program Variant2; Const n=10; Type.
Что получится в результате выполнения программы?
Опишите, что получится в результате выполнения программы? Program Variant3; Const n=17; Var B.
Что получится в результате выполнения программы?
Что получится в результате выполнения программы? Program V1; Const n=7; Type Myarray = Array Of.
8219 / 4338 / 1838
Регистрация: 27.03.2020
Сообщений: 7,162
hloomn, совсем лень погуглить, а сдавать нужно?
1 2 3 4 5 6
st = '1' + '8'*80 while '18' in st or '288' in st or '3888' in st : st = st.replace('18','2') st = st.replace('288','3') st = st.replace('3888','1') print(st)
Регистрация: 06.10.2020
Сообщений: 27
[nick]Gdez[/nick
Спасибо
На основе вашего примера попытался решить новую задачу.
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 100 единиц?
НАЧАЛО
ПОКА нашлось (111)
заменить (111, 2)
заменить (222, 3)
заменить (333, 1)
КОНЕЦ ПОКА
КОНЕЦ
st = ‘1’ * 100
while ‘111’ in st:
st = st.replace(‘111’, ‘2’)
st = st.replace(‘222′,’3’)
st = sr.replace(‘333′,’1’)
print (st)
Что то видно делаю не так. Подскажите пожалуйста
8219 / 4338 / 1838
Регистрация: 27.03.2020
Сообщений: 7,162
hloomn, условия вхождения перед заменой
Добавлено через 3 минуты
Ответ какой должен быть?
Добавлено через 1 минуту
hloomn,
1 2 3 4 5 6
st = '1' * 100 while '111' in st or '222' in st or '333' in st : st = st.replace('111','2') st = st.replace('222','3') st = st.replace('333','1') print(st)
Регистрация: 06.10.2020
Сообщений: 27
Gdez, простите. . Я же вроде как сделал цикл while.
Или вы имеете ввиду что бы добавить
if ‘111’ in st
st = st.replace(‘111’, ‘2’)
8219 / 4338 / 1838
Регистрация: 27.03.2020
Сообщений: 7,162
hloomn, в принципе от условия в while не зависит
Добавлено через 1 минуту
hloomn, ответ известен?
Регистрация: 06.10.2020
Сообщений: 27
Gdez,
Нет. Просто подаешь готовый код на проверку .
8219 / 4338 / 1838
Регистрация: 27.03.2020
Сообщений: 7,162
hloomn, попробуй
1 2 3 4 5 6
st = '1' * 100 while '111' in st : st = st.replace('111','2',1) st = st.replace('222','3',1) st = st.replace('333','1',1) print(st)
Добавлено через 41 секунду
Тот код — 2331
Этот — 3321
Добавлено через 11 минут
Прошло?
Регистрация: 06.10.2020
Сообщений: 27
Gdez, Все подошло, но как . Что сделала ‘1’?
8219 / 4338 / 1838
Регистрация: 27.03.2020
Сообщений: 7,162
hloomn, распараллелила
Добавлено через 6 минут
Лучше принты после каждой замены прописать и посмотреть
А так — замена блоками по три цмфры одновременно(!). Если есть 333222111, то за 1(!) проход должно получится 132
Коротко :
111 111 111 111 111 111 111 111 111
2 111 111 111 111 111 111 111 111
2 2 111 111 111 111 111 111 111
2 2 2 111 111 111 111 111 111 — после этого сразу две замены 111 на 2 и 222 на 3
3 2 111 111 111 111 111
3 2 2 111 111 111 111
3 2 2 2 111 111 111 — после этого сразу две замены 111 на 2 и 222 на 3
3 3 2 111 111
3 3 2 2 111
3 3 2 2 2
3 3 3
1
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Выяснить, что получится в результате выполнения программы
Опишите, что получится в результате выполнения программы? Program Variant3; Const n=17; Var B.
Опишите, что получится в результате выполнения программы
2. Опишите, что получится в результате выполнения программы? Program Variantl; Const n=7; Var С .
Что получится в результате программы? (Поясните одну из них)
1. Поясните программу: #include <iostream> using namespace std; void showArgs(double x)
Вычислите объем памяти, необходимый для приведенной ниже программы
Вычислите объем памяти, необходимый для приведенной ниже программы. Ском- пилируйте эту программу.
Укажите значение переменной m после выполнения приведенной ниже программы
Укажите значение переменной m после выполнения приведенной ниже программы var k, m; word;.
Или воспользуйтесь поиском по форуму:
ЕГЭ по информатике 2022 — Задание 12 (Вперёд, к Победе!)
Сегодня научимся решать 12 задание из ЕГЭ по информатике 2022.
В основном 12 задание решается шаблонно с помощью Питона, но есть и задачи, в которых нужен особый подход.
Перейдём к классической задачке из ЕГЭ по информатике 2022.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (2222) ИЛИ нашлось (666) ЕСЛИ нашлось (2222) ТО заменить (2222, 6) ИНАЧЕ заменить (666, 2) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 239 идущих подряд цифр 6? В ответе запишите полученную строку.
Решим задачу с помощью программы на Python’е.
s = '6'*239 while ('2222' in s) or ('666' in s): if '2222' in s: s = s.replace('2222', '6', 1) else: s = s.replace('666', '2', 1) print(s)
Здесь в начале формируется строка, состоящая из 239 шестёрок. Потом эта строка подаётся в программу. Программу переводим с русского языка на язык Питон.
Третий параметр в функции replace обозначает, что замену нужно производить один раз. Это в точности соответствует предложенной функции заменить.
Ответ получается 2266.
Ответ: 2266
В следующей типовой задаче из ЕГЭ по информатике 2022 нужно сообразить один момент.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (21) ИЛИ нашлось (31) ИЛИ нашлось (23) ЕСЛИ нашлось (21) ТО заменить (21, 12) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (31) ТО заменить (31, 13) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (23) ТО заменить (23, 32) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
На вход приведённой ниже программе поступает строка, содержащая 50 цифр 1, 50 цифр 2 и 50 цифр 3, расположенных в произвольном порядке. Запишите без разделителей символы, которые имеют порядковые номера 10, 90 и 130 в получившейся строке.
Здесь сказали, что начальный порядок цифр в строке неизвестен. А просят написать конкретные данные на выходе. Отсюда делаем вывод, что любой порядок в начале приводит к одному и тому же результату.
В строке заведём цифры по порядку: в начале единицы, потом двойки, потом тройки.
s = '1'*50 + '2'*50 + '3'*50 while ('21' in s) or ('31' in s) or ('23' in s): if '21' in s: s = s.replace('21', '12', 1) if '31' in s: s = s.replace('31', '13', 1) if '23' in s: s = s.replace('23', '32', 1) print(s[9] + s[89] + s[129])
Чтобы обратится к конкретному символу в строке, используем конструкцию s[позиция символа]. Но нумерация начинается с нуля.
В ответе запишем 132.
В следующей примерной задаче из ЕГЭ по информатике 2022 опять используем Питон.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (111) заменить (111, 22) заменить (222, 11) КОНЕЦ ПОКА КОНЕЦ
Известно, что исходная строка содержала более 70 единиц и не содержала других цифр. Укажите минимально возможную длину исходной строки, при которой в результате работы этой программы получится строка, содержащая максимально возможное количество единиц.
Здесь мы попробуем с помощью программы формировать строчки с разной длиной и смотреть, какое количество единиц получится на выходе.
for i in range(71, 1000): s = '1'*i while '111' in s: s = s.replace('111', '22', 1) s = s.replace('222', '11', 1) print(i, s.count('1'))
Посмотрев результаты, понимаем, что максимальное количество единиц в окончательной строке равно 4. А минимальное количество единиц в изначальной строке, чтобы получилось в итоге 4 единицы, равно 73.
Ещё один частый гость в тренировочных вариантах из ЕГЭ по информатике 2022.
Задача (Сумма цифр + непонятный символ)
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3) ЕСЛИ нашлось (>1) ТО заменить (>1, 22>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>2) ТО заменить (>2, 2>1) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>3) ТО заменить (>3, 1>2) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая 28 цифр 1, 18 цифр 2 и 35 цифр 3, расположенных в произвольном порядке. Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы. Так, например, если результат работы программы представлял бы собой строку, состоящую из 50 цифр 4, то верным ответом было бы число 200.
Здесь снова результат будет одним и тем же независимо от того, как будут расположены числа в начале.
s = '>' + '1'*28 + '2'*18 + '3'*35 while ('>1' in s) or ('>2' in s) or ('>3' in s): if '>1' in s: s = s.replace('>1', '22>', 1) if '>2' in s: s = s.replace('>2', '2>1', 1) if '>3' in s: s = s.replace('>3', '1>2', 1) # Находим сумму цифр в строке sm=0 for i in range(0, len(s)): if s[i]!='>': sm = sm + int(s[i]) print(sm)
Чтобы найти сумму цифр, мы пробегаем по всей строке с помощью цикла range. Если символ не равен «>», то превращаем его в число с помощью функции int() и суммируем в переменную sm.
Так же можно сумму цифр найти с помощью такой конструкции: sm = s.count( ‘1’ )*1 + s.count( ‘2’ )*2 + s.count( ‘3’ )*3. Других цифр, кроме 1, 2 и 3 нет в строке. Мы находим вклад каждой цифры в зависимости от её веса и количества.
Задача (Трудно запрограммировать)
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (11) ЕСЛИ нашлось(112) ТО заменить (112, 5) ИНАЧЕ заменить (11, 3) КОНЕЦ ПОКА КОНЕЦ
Исходная строка содержит 23 единицы и 5 двоек, других цифр нет, точный порядок расположения цифр неизвестен. Какую наибольшую сумму цифр может иметь строка, которая получится после выполнения программы?
Здесь не важно, по какой ветке будет идти программа, прирост в сумме цифр будет всегда равен 1. Поэтому можно расположить в начале только 1, а затем все двойки в исходной строке.
Одиннадцать раз символы ’11’ превратятся в ‘3’. Тогда 11 * 3 = 33. Останутся цифры ‘122222’. Их сумма равна 11.
В ответе получается 33 + 11 = 44.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (01) или нашлось (02) заменить (01, 2202) заменить (02, 10) КОНЕЦ ПОКА КОНЕЦ
Известно, что начальная строка начиналась с нуля, а далее содержала только единицы и двойки. После выполнения данной программы получилась строка, содержащая 40 единиц и 64 двойки. Сколько двоек было в исходной строке ?
Посмотрим, во что превращается 1:
Посмотрим, во что превращается 2:
Т.е. в окончательном результате двойки могли возникнуть только из 1. Двоек получается в два раза больше, чем было изначально единиц.
Получается, что изначальное количество единиц равно 64 / 2 = 32. Эти 32 единицы так же принесли 32 единицы. Всего 40 единиц стало. Значит, ещё 8 единиц получилось в результате преобразования 02 -> 10. Т.е. двоек будет 8.
Теперь попробуем решить задачу с помощью программы. Здесь неизвестно количество единиц и двоек. Поэтому придётся создавать вложенные циклы. Предположим, что количество единиц и двоек меньше 100, чтобы программа отработала за адекватное время.
for i in range(1, 100): for j in range(1, 100): s = '0' + '1'*i + '2'*j while ('01' in s) or ('02' in s): s = s.replace('01', '2202', 1) s = s.replace('02', '10', 1) if s.count('1')==40 and s.count('2')==64: print(j)
Получается количество двоек равно восьми.
Решим задачу про Робота, которая в последнее время редко встречается на экзамене по информатике.
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, состоит из 8 команд. Четыре команды — это команды-приказы:
вверх | вниз | влево | вправо |
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх , вниз , влево , вправо .
Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:
сверху свободно | снизу свободно | слева свободно | справа свободно |
Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. В конструкции ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ выполняется команда1 (если условие истинно) или команда2 (если условие ложно)
В конструкциях ПОКА и ЕСЛИ условие может содержать команды проверки, а также слова И, ИЛИ, НЕ, обозначающие логические операции.
Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится и программа прервётся.
Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО ПОКА снизу свободно ИЛИ справа свободно ПОКА справа свободно вправо КОНЕЦ ПОКА ЕСЛИ снизу свободнo ТО вниз КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
Проанализируем внимательно программу для Робота.
В программе есть главный цикл, внутри цикла проверяется сначала возможность двигаться вправо. Если есть такая возможность, робот будет двигаться до упора с помощью ещё одного цикла. Потом после того как больше нет возможности двигаться вправо, с помощью основного цикла и записанного условия будет перемещаться вниз, пока есть такая возможность.
Если нет возможности двигаться ни вправо, ни вниз, то Робот завершает программу.
Поняв этот алгоритм не сложно отметить те клетки, стартовав с которых, Робот остановится на клетке F6.
Ещё раз, Робот до упору будет двигаться вправо, потом до упору вниз, насколько это возможно. Вот алгоритм в двух словах.
Важно в этих задачах простыми словами сформулировать алгоритм, чтобы можно было проверять целые блоки лабиринта.
Количество клеток, удовлетворяющие условию будет 21.
12 Задание из ЕГЭ по информатике 2021 выглядит обычно объёмным, но на деле описываются обычные конструкции (Циклы и условия), которые есть в большинстве языках программирования.
Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнить команду сместиться на(a, b), где a, b — целые числа. Эта команда перемещает Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b).
Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместиться на(2, -3) переместит Чертёжника в точку (6, -1).
ПОВТОРИ число РАЗ
последовательность команд
КОНЕЦ ПОВТОРИ
означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).
Чертёжнику был дан для исполнения следующий алгоритм (число повторений и величины смещения в первой из повторяемых команд неизвестны):
НАЧАЛО сместиться на(8, -60) ПОВТОРИ . РАЗ сместиться на(. . ) сместиться на(4, -6) КОНЕЦ ПОВТОРИ сместиться на(-35, -3) КОНЕЦ
В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшие число повторений могло быть указано в конструкции «ПОВТОРИ . РАЗ» ?
Эта задача похоже на задачу Кузнечик, которую рассматривали в 5 задании.
Напишем для переменной x уравнение.
8 + n * x + n * 4 — 35 = 0
Всё выражение приравниваем к нулю, т.к. Чертёжник возвращается в исходную точку, т.е. как ни ходил Чертёжник, он никуда в итоге не сдвинулся.
n — положительное целое число, количество повторений.
x — целое число, смещение по координате x.
n * x + n * 4 = 27
n * ( x + 4 ) = 27
Нужно подобрать x и n, чтобы равенство было верным.
Число n может быть 27, 9, 3, 1. Нам нужно выбрать число n, как можно больше.
Проверим число 27! Тогда выражение x + 4 = 1 => x = -3. Теперь нужно проверить это число для координаты y.
-60 + n * y — n * 6 — 3 = 0
27 * y — 27 * 6 = 63
27 * ( y — 6 ) = 63
Видим, что нельзя подобрать такое целое число для 27, чтобы при умножении получалось 63.
Проверим число 9! Тогда выражение x + 4 = 3 => x = -1. Теперь нужно проверить это число для координаты y.
-60 + n * y — n * 6 — 3 = 0
9 * y — 9 * 6 = 63
9 * ( y — 6 ) = 63
Видим, что можно подобрать такое целое число для 9, чтобы при умножении получалось 63. Это число 7. Значит, y — 6 = 7 => y = 13
Мы подобрали все нужные числа и нашли наибольшее число n=9.
Счастливых экзаменов по информатике!