Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить
2. Прибавить
3. Умножить на
Программа для исполнителя — это последовательность команд.
Сколько существует различных результатов выполнения программ, содержащих команд и начинающих свою работу из . При этом траектория вычислений исполнителя содержит не более трех нечетных чисел.
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе траектория будет состоять из чисел .
Стоит сказать, что динамическое решение данной задачи получается достаточно трудоемким. Поэтому рекомендуется решать эту задачу с помощью рекурсии.
Решение 1 (Рекурсия)
def f(st, count_odd, count, end_count): global A if count == end_count and count_odd <= 3: A.add(st) if count_odd > 3 or count > end_count: return f(st + 1, count_odd + (st % 2 == 0), count + 1, end_count) f(st * 3, count_odd + (st % 2 == 1), count + 1, end_count) f(st + 3, count_odd + (st % 2 == 0), count + 1, end_count) A = set() f(2, 0, 0, 10) print(len(A))
Решение 2 (Динамика)
ans, otv = set(), set() ans.add((2, 0)) for operations in range(10): can_get = set() for i in ans: ch, chet = i if chet + (ch + 1) % 2 <= 3: can_get.add((ch + 1, chet + (ch + 1) % 2)) if chet + (ch + 3) % 2 <= 3: can_get.add((ch + 3, chet + (ch + 3) % 2)) if chet + (ch * 3) % 2 <= 3: can_get.add((ch * 3, chet + (ch * 3) % 2)) ans = can_get for i in ans: a, b = i otv.add(a) print(len(otv))
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить квадрат числа
2. Прибавить целую часть квадратного корня числа, если корень возможно извлечь
3. Вычесть 12
Программа для исполнителя — это последовательность команд.
Сколько существует различных результатов выполнения программ, содержащих 5 команд и начинающих свою работу из 23. При этом исполнитель не может совершать ходы, которые приводят его в числа кратные 5. Например, из числа 7 можно попасть только в 9 и 56.
Решение 1 (Рекурсия)
def f(st, count, end_count): global A # объявляем А глобальной переменной, чтобы добавлять туда #новые элементы из функции if count == end_count: A.add(st) else: if (st + st ** 2) % 5 != 0: f(st + st ** 2, count + 1, end_count) if (st - 12) % 5 != 0: f(st - 12, count + 1, end_count) if st >= 0: if (st + int(st ** 0.5)) % 5 != 0: f(st + int(st ** 0.5), count + 1, end_count) A = set() f(23, 0, 5) print(len(A))
Решение 2 (Динамика)
ans = set() ans.add(23) for operations in range(5): can_get = set() for i in ans: if (i + i ** 2) % 5 != 0: can_get.add(i + i ** 2) if (i - 12) % 5 != 0: can_get.add(i - 12) if i >= 0: if (i + int(i ** 0.5)) % 5 != 0: can_get.add(i + int(i ** 0.5)) ans = can_get print(len(ans))
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Вычесть 10
2. Умножить на -2
3. Модуль числа
Программа для исполнителя — это последовательность команд.
Сколько существует различных результатов выполнения программ, содержащих 10 команд и начинающих свою работу из 1. При этом исполнитель не может совершать ходы, которые не изменяют знак числа. Например, из числа 1 нельзя попасть в число 1, но можно в -9 и в -2.
Решение 1 (Рекурсия)
def f(st, count, end_count): global A if count == end_count: A.add(st) else: if st > 0: f(st * (-2), count + 1, end_count) if st < 10: f(st - 10, count + 1, end_count) if st < 0: f(st * (-1), count + 1, end_count) f(st * (-2), count + 1, end_count) A = set() # Лучший вариант для данной задачи, # в множестве не повторяются элементы f(1, 0, 10) print(len(A))
Решение 2 (Динамика)
ans = set() ans.add(1) for operations in range(10): can_get = set() for i in ans: if i > 0: can_get.add(i * (-2)) if i - 10 < 0: can_get.add(i - 10) else: can_get.add(abs(i)) can_get.add(i * (-2)) ans = can_get print(len(ans))
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить 1
2. Умножить на 2
3. Прибавить 4
Программа для исполнителя — это последовательность команд.
Сколько существует различных результатов выполнения программ, содержащих 8 команд и начинающих свою работу из 2.
Решение 1 (Рекурсия)
def f(st, count, end_count): global A # объявляем А глобальной переменной, # чтобы добавлять туда новые элементы внутри функции if count == end_count: A.add(st) else: f(st + 1, count + 1, end_count) f(st * 2, count + 1, end_count) f(st + 4, count + 1, end_count) A = set() # Лучший вариант для данной задачи, так как в множестве # не повторяются элементы f(2, 0, 8) print(len(A))
Решение 2 (Динамика)
ans = set() ans.add(2) for operations in range(8): can_get = set() for i in ans: can_get.add(i + 1) can_get.add(i * 2) can_get.add(i + 4) ans = can_get print(len(ans))
Ошибка.
Попробуйте повторить позже
Исполнитель преобразует число, записанное на экране. У исполнителя есть команды, которым присвоены номера:
1. Прибавить
2. Умножить на и прибавить
Первая команда увеличивает число на экране на вторая — увеличивает число в раза и добавляет Программа для исполнителя — это последовательность команд.
Сколько различных результатов можно получить из исходного числа после выполнения программы, содержащей ровно команд?
Решение 1 (Рекурсия)
ans = set() def f(start, com): global ans if com == 0: ans.add(start) return 0 f(start + 2, com - 1) f(start * 2 + 1, com - 1) f(6, 12) print(len(ans))
Решение 2 (Динамика)
ans = set() ans.add(6) for cnt in range(12): can_get = set() for i in ans: can_get.add(i + 2) can_get.add(i * 2 + 1) ans = can_get print(len(ans))