Граф Марат | Информатика | Морозилка


Гео и язык канала: Россия, Русский
Категория: Образование


💻 Граф Марат | Информатика ЕГЭ
Твои 90+ баллов по информатике начинаются тут🔥
Запись на ГОДОВОЙ 26/27: @morozilka_info_bot

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Образование
Статистика
Фильтр публикаций


Программисты, оч важная новость! ‼️

Уже во вторник, 13 октября, стартует второй модуль годового курса по информатике 🥳

Что вас ждет:
🤩циклы, списки, кортежи, множества и генераторы в Python 🐍
🤩разбор №18 (Робот) и №22 (Процессы)
🤩ручное решение №15 и №16
№2: таблицы истинности
🤩нарешка №3, 4, 7, 11, 18, 22


Записаться можно уже сейчас!

И у меня к вам предложение 😀
Если собираете на этом посте 10 реакций — дропаю жесткие скидки на курс!!
Поднажмите, я в вас верю 🤝


Погнали разбирать 😼

➖Восьмеричная запись (ответ 505)
Трёхзначный максимум в восьмеричной – 777₈ = 511
Чётные N нам не подходят: там появляется четвёртая цифра, и R уже не меньше 512
Идём от 511 вниз по нечётным:
511 = 777₈ → 777₈ = 511. Много
509 = 775₈ → 577₈ = 383. Много
507 = 773₈ → 377₈ = 255. На единицу не дотянули
505 = 771₈ → 177₈ = 127. Подходит

🌀Ответ: 505

➖Троичная запись, «1» и «02» (ответ 10)
Считаем по порядку:
N = 8 = 22₃, остаток 2, 2·4 = 8 = 22₃: 2222₃ = 80
N = 9 = 100₃, делится на 3: 1 100 02 = 110002₃ = 326. Много
N = 10 = 101₃, остаток 1, 1·4 = 4 = 11₃: 10111₃ = 94. Подходит
N = 11 = 102₃, остаток 2, 2·4 = 8 = 22₃: 10222₃ = 107. Уже больше 100

После этого запись становится длиннее, и R уже не вернётся ниже 100
🌀Ответ: 10

➖Троичная запись, «две последние цифры» (ответ 162)
Вручную тут долго, поэтому пишем функцию и перебираем (to_base — из утреннего поста):
def R(n):
s = to_base(n, 3)
if n % 3 == 0:
s += s[-2:]
else:
s += to_base(n % 3 * 5, 3)
return int(s, 3)

print(min(R(n) for n in range(1, 1000) if R(n) > 150)) # 162
На бумаге ответ тоже сходится:
N = 18 = 200₃ делится на 3, дописываем последние две цифры 00 и получаем 20000₃ = 162
🌀Ответ: 162


Какое наименьшее R больше 150?
Опрос
  •   151
  •   156
  •   160
  •   162


Наибольшее N, при котором R меньше 100?
Опрос
  •   8
  •   9
  •   10
  •   11


Какое наибольшее N даёт R меньше 254?
Опрос
  •   253
  •   504
  •   505
  •   511


№5: алгоритм с двоичной записью, разбираем по шагам ⚙️

Это задача про «выполни алгоритм и найди число». Обычно алгоритм такой:

1⃣Строим двоичную запись числа N
2⃣ Если N чётное, дописываем справа 01
3⃣ Если нечётное, дописываем слева 1 и справа 0
4⃣ Результат переводим обратно в десятичную, это число R

📎Пример
N = 13
13 = 1101₂. Число нечётное, значит слева 1 и справа 0: 1 1101 0 = 111010₂.
111010₂ = 32 + 16 + 8 + 2 = 58

➖В Python это удобно писать функцией:
def R(n):
b = bin(n)[2:]
if n % 2 == 0:
b = b + '01'
else:
b = '1' + b + '0'
return int(b, 2)
А чтобы найти минимальное N с условием, просто перебираем:
for n in range(1, 100):
if R(n) > 100:
print(n)
break

Тот же приём работает в любой системе
➖Для троичной берём to_base(n, 3), а обратно переводим через int(s, 3)
➖Для восьмеричной: oct(n)[2:] и int(s, 8):
s = to_base(n, 3) # троичная запись
# ... твоё правило из условия ...
r = int(s, 3) # обратно в десятичную

Нужно минимальное N? Берём первое подходящее снизу
Нужно максимальное N? Перебираем с запасом и берём последнее подходящее

Квиз про это в 16:00 😀


ВОСЬМЕРИЧНАЯ, ШЕСТНАДЦАТЕРИЧНАЯ И ВСЕ-ВСЕ-ВСЕ 🧮

В №5 основание может быть любым: троичная, пятеричная, восьмеричная, шестнадцатеричная 😵‍💫

Правила те же, что и для двоичной, меняется только число q
▫️цифры только от 0 до q − 1 (в троичной цифры 3 не бывает)
▫️в шестнадцатеричной после 9 идут буквы: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15

🔻В десятичную🔻
Раскладываем по степеням основания:
243₅ = 2·5² + 4·5 + 3 = 50 + 20 + 3 = 73
2F₁₆ = 2·16 + 15 = 47


🔻Из десятичной🔻
Делим на основание, остатки читаем снизу вверх:
73 : 5 = 14, остаток 3
14 : 5 = 2, остаток 4
2 : 5 = 0, остаток 2
Читаем снизу вверх:
243₅


Лайфхак 🥰
Двоичную запись можно переводить группами: по 3 цифры в восьмеричную, по 4 цифры в шестнадцатеричную

101110₂ → 101 | 110 → 56₈
101110₂ → 0010 | 1110 → 2E₁₆

▫️В Python:
print(int('243', 5)) # 73
print(hex(255)) # 0xff
print(oct(8)) # 0o10
▫️для троичной и других оснований встроенной функции нет, вот шаблон для перевода в любую систему счисления до 9 (делим на основание и складываем остатки слева):
def to_base(n, q):
s = ''
while n > 0:
s = str(n % q) + s
n //= q
return s

print(to_base(11, 3)) # 102
⚠️ Ловушка: если в записи есть цифра, которая больше или равна основанию, значит, ты что-то посчитал(а) не так, внимательно относимся к подсчетам! 😶

В 14:00 разберём типичный алгоритм из №5, а в 16:00 квизы, не пропусти 👀


Разбираааем 💻

✅«11» по краям (ответ 123)
Правило зависит от чётности
🤩Если N чётное, запись R начинается и заканчивается на 11
🤩Если нечётное, начинается на 1 и заканчивается на 00

Проверяем числа после 119:
120 = 1111000₂. Хвост 00, значит N нечётное. Середина 1110 = 14, это чётное число -> не подходит

121 = 1111001₂ и 122 = 1111010₂: таких хвостов (01 и 10) у алгоритма не бывает

123 = 1111011₂. Начало 11, хвост 11, середина 110 = 6. Чётное, всё сходится 🥳
Ответ: 123

📎Бит чётности (ответ 64)
К записи дописаны два разряда справа, значит R = 4·N + хвост (от 0 до 3). Для R > 253 нужно N ≥ 63

N = 63 = 111111₂: сумма цифр 6, чётная, дописываем 0: 1111110. Сумма снова 6, дописываем 0: 11111100₂ = 252. До 253 не дотянули :(

N = 64 = 1000000₂: получаем 100000010₂ = 258. Подходит 🥳
Ответ: 64

📎«10» слева и «01» справа (ответ 109)
Проще всего перебрать всё, так как N всего до 12:
def R(n):
b = bin(n)[2:]
b = '10' + b if n % 2 == 0 else '1' + b + '01'
return int(b, 2)

print(max(R(n) for n in range(1, 13))) # 109
🤩Нечётные: 1 → 13, 3 → 29, 5 → 53, 7 → 61, 9 → 101, 11 → 109
🤩Чётные маленькие: максимум 44 (N = 12)
Ответ: 109


Двоичная запись N. Если N чётное, слева дописывается «10». Если нечётное, слева «1», справа «01» (4 → 20, 5 → 53). Какое наибольшее R можно получить, если N не больше 12?
Опрос
  •   44
  •   67
  •   101
  •   109
2 голосов


Какое наименьшее N даёт результат больше 253?
Опрос
  •   62
  •   63
  •   64
  •   65
2 голосов


Двоичная запись N. Если N чётное, слева и справа дописывается по «11». Если нечётное, слева «1», справа «00». Результат в десятичной системе R (13 → 116, 14 → 251). Какое наименьшее R больше 119?
Опрос
  •   120
  •   121
  •   123
  •   124
2 голосов


ПЕРЕМЕННАЯ: КОРОБКА, БЕЗ КОТОРОЙ НЕТ НИ ОДНОЙ ПРОГИ 📦

Весь Python в ЕГЭ держится на переменных. Не понял(а) их, и дальше будет больно. Но затооо это реально проще, чем кажется 😎

📌Переменная — это область памяти, где хранятся данные. По сути, «коробка» с названием и содержимым

🔘название — как подписать коробку
🔘значение — что лежит внутри, и оно может быть любого типа: число, текст и не только

Объявление: переменная = значение
age = 18
print(age) # 18

Знак = тут не «равно» как в математике, а «положи в коробку»
Справа то, что кладём, слева название коробки

В ближайшие дни разберём строки, а они нужны почти в каждой задаче на текстовый файл 👀
А пока обязательно сохрани этот пост 😉


ДВОИЧНАЯ СИСТЕМА: ВСЕГО ДВЕ ЦИФРЫ, А ПРОБЛЕМ ДОФИГА 😅
Основание 2, цифры только 0 и 1. Именно в ней чаще всего и устроен №5

🔘Двоичная → десятичная
Раскладываем по степеням двойки:
1101₂ = 1·2³ + 1·2² + 0·2¹ + 1·2⁰ = 8 + 4 + 0 + 1 = 13

🔘Десятичная → двоичная
Делим на 2 с остатком, остатки читаем снизу вверх:
13 : 2 = 6, остаток 1
6 : 2 = 3, остаток 0
3 : 2 = 1, остаток 1
1 : 2 = 0, остаток 1

Читаем снизу вверх: 1101

📌Степени двойки, которые надо знать наизусть:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024


⚡️Три свойства, которые экономят время:
🔘чётное число заканчивается на 0, нечётное на 1
🔘дописать 0 справа значит умножить на 2 (1101₂ = 13, 11010₂ = 26)
🔘убрать последнюю цифру значит целочисленно разделить на 2 (110₂ = 6 = 13 // 2)
🔘дописать цифру справа значит ×2 и плюс эта цифра (101₂ = 5, 1011₂ = 5·2 + 1 = 11)

В №5 часто к записи «дописывают» цифры слева и справа («слева 1, справа 00», «по две единицы по краям») или считают «бит чётности»: сумму цифр записи делят на 2 и дописывают остаток. В Python это одна строка:
b = bin(13)[2:] # '1101'
b = b + str(b.count('1') % 2) # 3 единицы, 3 % 2 = 1 → '11011'
print(int(b, 2)) # 27
Если условие длинное и пугает, берёшь маленькое N, строишь R руками и сверяешь с примером из условия

✅В Python переводить можно кодом:
print(bin(13)) # 0b1101
print(int('1101', 2)) # 13
⚠️ Ловушка: остатки читают сверху вниз и получают перевёрнутое число (1011 вместо 1101). Читай только снизу вверх

В 16:00 квизы, проверим 👀


С добрым! Сегодня такой вопрос — какую задачу из ЕГЭ по информатике ты бы убрал(а), если бы была возможность? 😀
Опрос
  •   Все, где Excel 😮‍💨
  •   Все, где графы 🫤
  •   Машину Тьюринга 😵‍💫
  •   Все 🤒
12 голосов






Что происходит в голове, когда решаешь задание 6 на черепашку 😁






Кто тут такой важный 😁

Показано 20 последних публикаций.