Задание 23 // КЕГЭ по информатике 2024

preview_player
Показать описание
Разбираем задачи с контролем команд и чисел в траектории!

За мат, КАПС, политоту, флуд - перманентный бан.

--------------------------------------------------------------------------------------------

Ссылки на каналы других годных преподавателей:
Евгений Джобс

Тимофей Хирьянов

Информатик БУ

Alex Danov

Андрей Рогов

Леонид Шастин

PRO100 EGE

Таймкоды
00:00 Приветствие
04:10 Предыдущие команды 1
14:40 Смотрим визуализацию
20:20 Предыдущие команды 2
29:40 Смотрим визуализацию
36:10 Счётчик команд 1
45:05 Смотрим визуализацию
51:30 Счётчик команд 2
56:50 Смотрим визуализацию
01:02:35 Счётчик команд 3
01:06:35 Счётчик чисел
01:14:05 Смотрим визуализацию
01:19:10 Предыдущие числа 1
01:26:10 Смотрим визуализацию
01:30:20 Предыдущие числа 2
01:39:20 Смотрим визуализацию
01:44:50 Комбинированные условия
01:55:40 Окончание и напутствия
Рекомендации по теме
Комментарии
Автор

То чувство, когда посмотрел на задачу, остановил ролик, продумал решение, сравнил с вашим, и получилось по идее всë похожее, например, в задании на счëтчик нечëтных чисел можно было в сложении рекурсий прописать условие k+c%2 (логично оставить в c==e: k<=7) в общем спасибо вам)

deniskakovkin
Автор

задачу на 1:19:21 можно решить не используя третий параметр в функции, например так:
def f(c, e):
if c>e: return 0
if c==e: return 1
if c<e and c%2!=0: return f(c*4, e)
if c<e and c%2==0: return f(c*4, e) + f(c+2, e) + f(c*3, e)
print(f(1, 600))

krxxj
Автор

Вчера решал эти задачи( где из 1 в 600), с 1 задачей получился код легче чем у вас, а остальные ни 1 не работала, теперь всё работают, спасибо

jxcuujf
Автор

Будут ли в скором времени новые пробники на сайте? Или пока рано?

wuuqpnr
Автор

здравствуйте, скажите пожалуйста, возможно подготовиться на вашем курсе за оставшееся время на 90+, если сейчас пишу баллов на 70, до этого занималась в онлайн школе) ??

ksuhjanisja
Автор

5217
if c>e or k>2: return 0

Так тоже можно. И вызовов должно быть меньше

qxeputj
Автор

[1:38:40] Подскажите, пожалуйста, почему код выдает неверный ответ. Никак не могу понять

def F(a, b, arr):
arr.append(a)
if a > b:
return 0
elif a == b:
for i in range(len(arr) - 2):
if (arr[i] + arr[i + 1] + arr[i + 2]) % 11 == 0:
return 1
return 0
else:
return F(a + 2, b, arr) + F(a * 3, b, arr) + F(a * 4, b, arr)

print(F(1, 600, []))

olegatabaev
Автор

такие задания могут встретиться на егэ?

hzondpv
Автор

А кто-нибудь знает, как решать 23 задачи, в которых комбинируется условия вычитания и сложения в одной программе? На Полякове видел такие, но при решении данным способом выдает ошибку.

vasilydndn
Автор

Простите пожалуйста, а где разбор 23, в начале веба вы сказали что уже разбирали на курсе, не могу найти.

kflibsv
Автор

Этого вебинара хватит для решения 23х заданий?

Ryzzon
Автор

Алексей, добрый вечер. Подскажите как решить задачу 6038 с сайта Полякова
1. Прибавь 1
2. Умножь на 2
3. Прибавь 3
Первая команда увеличивает число на экране на 1, вторая увеличивает его в два раза, третья – увеличивает на 3. Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют исходное число 5001 в число 45789 и при этом не содержат двух одинаковых команд подряд? Для меньших значений считает нормально, а для больших нет, и cache не помогает.

ohzygle
Автор

Алексей, помогите, пожалуйста с заданием 23 №5304 Полякова . Написала код :
def f(a, b, k):
if a == b and k % 2 == 1:
return 1
if a == b and k % 2 != 1:
return 0
if a > b:
return 0
if a<b :
return f(a + 2, b, k+1) + f(a * 2, b, k + 1) + f(a * a, b, k + 1)

print(f(1, 100, 0))


Выдает ошибку : RecursionError: maximum recursion depth exceeded in comparison
Что не верно ?
Спасибо за помощь.

oabugaeva
Автор

1:09:00
Попробовал сам решить - верно:
from functools import *


@lru_cache(None)
def f(c, e, k):
d = k + 1 if c % 2 != 0 and c != 1 else k # Можно не писать, что c != 214, т.к не дойдет до низа
if c > e: return 0
if c == e: return k <= 6
return f(c + 2, e, d) + \
f(c * 2, e, d) + \
f(c * 3, e, d)
print(f(1, 214, 0))

dusshhess
Автор

Моё решение:

class Node:
parent = None
value = 0

def __init__(self, parent, value):
self.parent = parent
self.value = value


def calc(op, num):
if op == 0:
return num + 2
if op == 1:
return num * 3
return num * 4


def parseNode(node):
nums = []
while node is not None:
nums.append(node.value)
node = node.parent
nums.reverse()
return nums

start = Node(None, 1)
end = 600
operations = 3
# Необходимо менять Node(None, ???) на начальное значение
# Необходимо менять end на конечное значение
# operations на количество операций
# Также, необходимо менять функцию calc на необходимые условия

branch = [start]
result = []

for i in range(end):
branch2 = []

for node in branch:
for j in range(operations):
result_num = calc(j, node.value)

if result_num == end:
result.append(Node(node, result_num))
continue
if result_num >= end:
continue
branch2.append(Node(node, result_num))

branch = branch2

matrix = []
for el in result:
matrix.append(parseNode(el))

# print(f'Все возможные варианты: {matrix}')
print(f'Количество комбинаций = {len(result)}')
# Дальше ручная обработка матрицы в зависисти от условий!

count = 0
for arr in matrix:

for i in range(0, len(arr) - 3, 1):
if (arr[i] + arr[i + 1] + arr[i + 2]) % 11 == 0:
count += 1
break
print(count)

wetizjs
Автор

Алексей, обращаюсь с просьбой о помощи. Написал код к задаче. Не пойму в чем ошибка

def f(x, y):
if x>99:
e = x % 10
d = x % 100 // 10
s = x // 100
mn = min(e, d, s)
mx = max(e, d, s)
else:
e = x % 10
d = x // 10
mn = min(e, d)
mx = max(e, d)
if x > y:
return 0
if x == y:
return 1
if x < y :

if mx==1:return f(x + 1, y)
elif mn<=1 or mn==mx:return f(x + 1, y) + f(x + mx, y)
else: return f(x + 1, y) + f(x + mx, y) + f(x + mn, y)

print(f(82, 95) * f(95, 103) * f(103, 124))

(А. Минак) У исполнителя Калькулятор имеются три команды, которые обозначены латинскими буквами:
А. Прибавь 1
B. Прибавь младшую цифру
C. Прибавь старшую цифру
Программа для исполнителя – это последовательность команд, каждая из которых изменяет число. Сколько существует программ c разными траекториями, для которых при исходном числе 82 результатом является число 124, и при этом траектория вычислений содержит число 95 и число 103? Траектория вычисления программы – это последовательность результатов выполнения всех команд программы. Например, при исходном числе 17 траектория вычислений программы CBA будет состоять из чисел 18, 26, 27.

diedjest