Ошибка.
Попробуйте повторить позже
Некий исполнитель умеет делать всего две команды, которым присвоены номера:
1. прибавь 1
2. умножь на пять
Первая из них увеличивает число на экране на 1, вторая умножает число на 5. Запишите порядок команд в программе получения из 3 числа 425, содержащей не более 5 команд, указывая лишь номера команд. Если таких программ более одной, то запишите любую из них.
Например, 21211 — это программа, которая преобразует число 2 в 57.
Пойдём от числа 425 к числу 3 с помощью противоположных команд, то есть используя команды:
1. "вычти 1"
2. "раздели на 5"
Получаем последвательность команд:
2.
2.
1.
1.
2.
Так как команды мы считали в обратном порядке, то в ответ записываем команды снизу вверх, то есть 21122.
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
- Из числа N вычитается остаток от деления N на 7, после чего прибавляется остаток от деления N на 5.
- Строится двоичная запись полученного результата.
-
К этой записи дописываются справа ещё два разряда по следующему правилу:
складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа).
над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись является двоичной записью искомого числа R. Укажите минимальное число R, большее 46, которое может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе.
mn = 10**10 for n in range(1, 500): n = n - n % 7 + n % 5 b = bin(n)[2:] b += str(b.count(’1’) % 2) b += str(b.count(’1’) % 2) if int(b, 2) > 46: mn = min(mn, int(b, 2)) print(mn)
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
- Строится семиричная запись числа N
- В начало записи (слева) дописывается остаток от деления числа N на 5, а в конец записи (справа) остаток от деления N на 3.
- Результат переводится из семиричной системы в десятичную и выводится на экран.
Какое наибольшее трехзначное число может появиться на экране в результате работы этого алгоритма?
for n in range(1, 1000): s = ’’ x = n while x > 0: s = str(x % 7) + s x = x // 7 s = str(n % 5) + s + str(n % 3) r = int(s, 7) if len(str(r)) == 3: print(r)
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. В четверичной записи числа N дублируется последняя цифра.
2. Получившееся число переводится в двоичное представление.
3. В получившейся записи дублируется последняя цифра.
4. Полученное в результате этих операций число переводится в десятичную систему счисления.
Укажите максимальное число, которое может являться результатом выполнения алгоритма, меньшее 280.
mx = 0 for n in range(1, 300): f = ’’ while n > 0: f = str(n % 4) + f n = n // 4 f += f[-1] b = bin(int(f, 4))[2:] b += b[-1] r = int(b, 2) if r < 280: mx = max(r, mx) print(mx)
Ошибка.
Попробуйте повторить позже
Автомат получает на вход трехзначное число. По этому числу строится новое число по следующим правилам.
1. Из цифр, образующих десятичную запись N, строится наибольшее и наименьшее возможные двузначные числа
(числа не могут начинаться с нуля)
2. На экран выводится разность полученных двузначных чисел.
Чему равно количество чисел N в отрезке [300,700], в результате обработки которых на экране появится число 10?
c = 0 for n in range(300, 701): s = str(n) mn = 10**10 mx = -10**9 for i in range(len(s)): for j in range(i+1, len(s)): if s[i] != ’0’: mx = max(int(s[i]+s[j]), mx) mn = min(int(s[i]+s[j]), mn) if s[j] != ’0’: mx = max(int(s[j]+s[i]), mx) mn = min(int(s[j]+s[i]), mn) if mx-mn == 10: c += 1 print(c)
Ошибка.
Попробуйте повторить позже
Исполнитель Робот действует на клетчатой доске, между соседними клетками которой могут стоять стены. Робот передвигается по клеткам доски и может выполнять команды 1 (вверх), 2 (вниз), 3 (вправо) и 4 (влево), переходя на соседнюю клетку в направлении, указанном в скобках. Если в этом направлении между клетками стоит стена, то Робот разрушается. Робот успешно выполнил программу
1334134241
Какую последовательность из шести команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
Нарисуем схему передвижения робота по заданной программе. Мы видим, что для возвращения на исходную точку нам нужно сделать два шага вниз, но так как необходимо сделать шесть шагов, то между двумя командами вниз нужно вставить по два повторяющихся шага влево/вправо. Исходя из схемы, нам нужно сначала сдвинуться на две позиции вправо, а затем на две позиции влево.
Ошибка.
Попробуйте повторить позже
Исполнитель Робот ходит по клеткам бесконечной вертикальной клетчатой доски, переходя по одной из команд вверх, вниз, вправо, влево в соседнюю клетку в указанном направлении. Робот выполнил следующую программу:
влево
влево
вправо
вверх
вправо
вверх
вверх
вправо
вниз
вверх
вправо
вправо
влево
вниз
вверх
Укажите наименьшее возможное число команд, которое необходимо для того, чтобы Робот вернулся в ту же клетку, из которой начал движение.
# Вычисляем, # на сколько единиц мы продвинулись по осям X(влево-вправо) и Y(вверх-вниз) от начала координат x = -1-1+1+1+1+1+1-1 y = +1+1+1-1+1-1+1 # Получаем x = 2 и y = 3, берём модули от чисел и складываем их, # именно столько ходов нам потребуется сделать # (x = 2, значит, нужно сделать два хода влево, # y = 3, значит, нужно сделать три хода вниз, # итого, ответ — 5) print(x, y)
Ошибка.
Попробуйте повторить позже
Исполнитель Чертежник имеет перо, которое можно поднимать, опускать и перемещать. При перемещении опущенного пера за ним остается след в виде прямой линии. У исполнителя существуют следующие команды:
Сместиться на вектор (а, b) – исполнитель перемещается в точку, в которую можно попасть из данной, пройдя а единиц по горизонтали и b – по вертикали.
Запись: Повторить 5[Команда 1 Команда 2] означает, что последовательность команд в квадратных скобках повторяется 5 раз.
Чертежник находится в начале координат. Чертежнику дан для исполнения следующий алгоритм:
Сместиться на вектор (251,39)
Сместиться на вектор (-246, 8)
Повторить 9[Сместиться на вектор (0,-1)]
Сместиться на вектор (4, 2)
На каком расстоянии от начала координат будет находиться исполнитель Чертежник в результате выполнения данного алгоритма?
# Сначала вычисляем итоговую координату по осям X и Y x = 251 - 246 + 9*0 + 4 y = 39 + 8 + 9*(-1) + 2 # Чтобы найти расстояние от нулевой координаты до итоговой, # нужно воспользоваться теоремой Пифагора и вычислить гипотенузу предполагаемого треугольника, # который получается, если провести стороны из итоговой координаты до осей X и Y c = (x**2 + y**2)**0.5 print(c)
Ошибка.
Попробуйте повторить позже
У исполнителя Шаг- есть команды:
1. Прибавить к числу ;
2. Прибавить к числу ;
Напишите для него любую программу, состоящую из номеров команд, которая переводит число в за команд.
Программой
for q in [1, 2]: for w in [1, 2]: for e in [1, 2]: for r in [1, 2]: for t in [1, 2]: for y in [1, 2]: prog = str(q) + str(w) + str(e) + str(r) + str(t) + str(y) start = 3 for x in prog: if x == ’1’: start += 5 if x == ’2’: start += 2 if start == 21: print(prog)
Руками
Одним из оптимальных методов решения является написание программы шаг за шагом приближающей число к ответу. По началу выполняем команды увеличивающие число на наибольшую возможную величину, в данном случае при помощи первой команды. Так доходим до т. к. последнее нечетное число меньшее при прибавлении каждым шагом. Далее добавляем недостающие двойки до . В данном задании несколько вариантов правильных комбинаций команд т. к. их последовательность не имеет значения.
- 112222
- 121222
- 122122
- 122212
- 122221
- 211222
- 212122
- 212212
- 212221
- 221122
- 221212
- 221221
- 222112
- 222121
- 222211