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

preview_player
Показать описание
Разбираем решение 5 задания программным образом

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

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

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

Таймкоды
00:00 Приветствие
01:35 Двоичная запись 1
08:30 Двоичная запись 2
14:00 Двоичная запись 3
20:15 Сумма цифр числа
30:55 Двоичная запись 4
37:20 Замена цифр числа
43:30 Как переводить в другие СС
50:20 Троичная запись числа
54:55 Двенадцатеричная запись числа
01:01:00 Восьмибитная запись числа, инвертирование разрядов
01:10:00 Добавление в середину числа
01:15:15 Суммирование цифр десятичной записи
01:21:15 Построение двузначных чисел из цифр числа
01:29:15 Построение чисел из соседних цифр числа
01:34:00 Сумма цифр на чётных местах
01:40:50 Количество чисел с определённым результатом
01:43:55 Подбор границ диапазона начальных чисел
01:59:00 Окончание и напутствия
Рекомендации по теме
Комментарии
Автор

11:25 Нет особой необходимости два раза повторять одно и то же условие. Можно просто написать:
if b.count('1')%2==0:
b = b + '00'
else:
b = b + '10'

GameChanger___
Автор

26:28 можно через лямбда-функцию еще написать: sum( map( lambda x: int( x, 16 ), b ) )

arbuz_dog
Автор

1:34:00
Более компактный вариант решения:
for N in range(1, 1000):
s = sum([int(x) for x in str(N) if int(x) % 2 == 0])
s2 = sum([int(str(N)[x]) for x in range(len(str(N))) if (x + 1) % 2 == 0])
r = abs(s2 - s)
if r == 7:
print(N, r)

tezrogg
Автор

29:00

k = 0
for n in range(1, 1000):
s = bin(n)[2:]
s += str(sum(map(int, s))%2)
s += str(sum(map(int, s))%2)
if 210 <= int(s, 2) <= 260:
k += 1
print(k)

flotmac
Автор

59:00
def twelf(x):
s = ''
while x > 0:
s = str(x % 12) + s
x //= 12
return s

a = []
for n in range(12, 1000):
s = twelf(n)
if n % 12 == 0:
s += s[-2:]
else:
s += twelf(n % 12 * 9)
R = int(s, 12 )
if R > 300:
a.append(R)
print(min(a))

roll
Автор

Самое большое количество приветов другим заданиям было передано именно в этом вебе. Привет-привет всем упомянутым заданиям! :)

Voronoka
Автор

Сумму цифр в числе можно еще так искать, если другое не вспомнится, то довольно примитивный способ ( как по мне)
h = 0
b = '123441'
for i in range(5):
h += b.count(str(i))*i
print(h)

wasby
Автор

почему на 1:08:39 вы прибавляете 1 к десятичному числу, если сказано, что к двоичному и какой тогда должен быть ответ? на таком диапазоне у меня не выдавал, только до 180

Englishwithme-ovio
Автор

29:36
Здравствуйте Алексей, а если программа все же может иметь в списке повторы, как лучше перебрать?

artem
Автор

1:46:21 Почему, Алексей Михайлович, вы делаете перевод в int. Я понял, что типо двоичная Запись остатка от деления, но разве нельзя b двоичное разделить на 5?

glebandgo
Автор

57:06 почему range с 12, а не с 1? Из-за 12СС?

evamalayaaaa
Автор

Здравствуйте, хочу спросить на счёт счётчика, я правильно понимаю, если нам лень считать, то мы задаём счётчик k = 0, а далее k = k + 1 к k прибавляем и его запускаем и так он начинает считать.

teisu
Автор

Алексей, у меня вопрос к задаче под названием "Двоичная запись 3". Объясните пожалуйста: почему, когда мы добавили к перемнной b ещё одну единицу, переменная b не двоичная запись числа и вы ввели переменную b1?....

Возможно не корректно сформулировал, поэтому, если вам не сложно, объясните пожалуйста ещё раз тот самый номер?... Очень хочу понять...

savanasha
Автор

59:00 правильный ответ будет 306, для N = 2!

АртёмНикитин-жф
Автор

Задачу 62 быстрее и проще решить аналитически

GameChanger___
Автор

что-то у него седые волосы что ли появились...

uniyreperrizcheb
Автор

a =
м ='0'*36
Ибо i в a:
k = int(i, 36)
m = m[:k] + i + m[k+1:]
печать (м)

noname-br
Автор

для тех, кому лень учить английский алфавит или писать string.asii_lowercase:
a =
m ='0'*36
for i in a:
k = int(i, 36)
m = m[:k] + i + m[k+1:]
print(m)

noname-br