Выполнение и анализ программ
КИМ 5 (Б,4 мин)
Важно знать!
- сумма двух цифр в десятичной системе счисления
- бит чётности – это дополнительный контрольный бит, который добавляется к двоичному коду так, чтобы количество единиц в полученном двоичном коде стало чётным; если в исходном коде уже было чётное количество единиц, дописывается 0, если нечётное – дописывается 1.
- при добавлении к двоичной записи числа нуля справа число увеличивается в 2 раза (сдвиг влево)
- чтобы отбросить последнюю цифру в двоичной записи, нужно разделить число на 2 нацело (остаток отбрасывается) (сдвиг вправо)
Важно знать!
- Строки- str(a)
- Срезы а[2:] –с 3й позиции, a[-3:] -крайние 3 правые цифры
- Перевод в двоичную b = bin(a)[2:]
- Из двоичной в десятичную b = int(a,2)
- Добавление в список пары элементов (кортеж) a.append ((x,y))
- Сортировка списка из кортежей по второму элементу
sorted(a, key = lambda x: x[1] )
КИМ 5 (б = 4 мин)
#Строится двоичная запись числа N. #а) если N делится на 3, то к этой записи дописываются 3 последние двоичные цифры; #б) если число N на 3 не делится, то остаток от деления *на 3,переводится в двоичную запись и дописывается в конец числа. #Полученная запись является двоичной записью искомого R. #Результат переводится в десятичную систему и выводится на экран. #Укажите мин R, большее 151, которое может быть получено. В ответе -в 10чной с|сч.
Основа программы:
for i in range ( 1 , 10 ): n = bin (i)[ 2 :] n3 = n[- 3 :] if i % 3 == 0 : n_ch = str (n) + str (n3) else : n_ost = bin( (i % 3 ) *3)[ 2 :] n_ch = str (n)+ str (n_ost) r = int (n_ch,2) print (n, r)
# переводим в двоичную
# выделяем 3 крайние правые цифры
# к числу приклеиваем 3 правые цифры
# остаток от деления на 3 умножаем на 3 и переводим в двоичную с/сч
# добавляем к числу «двоичный» остаток
# переводим в десятичную с/сч
151: k.append ( (i, r) ) print(sorted(k, key= lambda x:x[1])) print(sorted(k, key= lambda x:x[0])) # создаем пустой список # добавляем в список кортеж число N и результат R # сортируем список по R # сортируем список по N Ответ:163 " width="640"
Программа:
k = [ ] for i in range(1, 100): n = bin(i)[2:] n3 = n[-3:] if i % 3 == 0: n_ch = str(n) + str(n3) else : n_ost = bin((i % 3)*3)[2:] n_ch = str(n)+str(n_ost) r = int(n_ch,2) #print(n, r) if r 151: k.append ( (i, r) ) print(sorted(k, key= lambda x:x[1])) print(sorted(k, key= lambda x:x[0]))
# создаем пустой список
# добавляем в список кортеж число N и результат R
# сортируем список по R
# сортируем список по N
Ответ:163
Задача 2
1 способ
1.Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;
б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.
Полученная таким образом запись является двоичной записью искомого числа R.
Укажите минимальное число N, после обработки которого получается число R, большее 40. В ответе- число в десятичной с\е счисления.
Можем получить неверный ответ!
Поэтому 8 строку лучше заменить на:
print(sorted(k, key= lambda x:x[0]))
Ответ: 16
k=0 for n in range(4000,10000): if n // 1000 == 4 or n // 1000 == 8 or n // 1000 == 9: if n % 8 == 4: k += 1 #print(n,end= ',' ) print(k)
Ответ: 375
k= 0 #k8 = 0 for n in range ( 4000 , 10000 ): a = str (n) if ((a[ 0 ]== '4' ) or (a[ 0 ]== '8' ) or (a[ 0 ]== '9' )) and (n % 8 == 4 ): k += 1 if (a[ 0 ] == '4' ) or (a[ 0 ] == '8' ) or (a[ 0 ] == '9' ): #k8 += 1 print (k) #print(k8)
Ответ: 375
1100100 : # 100 в двоичной print(i) break " width="640"
for i in range(5, 100): n = bin(i)[2:] for k in range(2): #сумма цифр = кол-ву единиц if n.count('1') % 2 == 0: n = str(int(n[1:])) #int-убирает незначащие нули else : n = '1'+ n + '00' r = int(n) #print(r) if r 1100100 : # 100 в двоичной print(i) break
Ответ: 26
190: k.append((n, r)) print(sorted(k,key = lambda x:x[1])) print(sorted(k,key = lambda x:x[0])) Ответ: 16 " width="640"
k = [ ] for n in range(1, 100): na = bin(n)[2:] na2 = bin(na.count( '1' ))[2:] if n % 2 == 0: nc = '1' + na + '00' else : nc = na + na2 #print(na,nc) r = int(nc, 2) if r 190: k.append((n, r)) print(sorted(k,key = lambda x:x[1])) print(sorted(k,key = lambda x:x[0]))
Ответ: 16
Формулы Excel
Перевод из десятичной в двоичную
Подсчитать кол-во "1»
Найти частное:
или так:
Литература
- Босова Л.Л. «Информатика 10 класс»: Москва, Бином. Лаборатория знаний, 2021 г
- Сайт Константина Полякова «ЕГЭ по информатике 2023» , задание 5. [https://kpolyakov.spb.ru/school/ege.htm]
- Демоверсия ЕГЭ по информатике 2024 (сайт ФИПИ)