Примеры решения задний 5 ЕГЭ по
информатике на языке PYTHON
№ 4, Демоверсия 2021
На вход алгоритма подаётся натуральное
число N.
Алгоритм строит по нему новое число R
следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё
два разряда по следующему правилу:
а) складываются все цифры двоичной записи
числа N,
и остаток от деления суммы на 2
дописывается в конец числа (справа).
Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же
действия – справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на
два разряда больше,
чем в записи исходного числа N)
является двоичной записью искомого числа R.
Укажите такое наименьшее число N,
для которого результат работы данного алгоритма больше числа 77.
В ответе это число запишите в десятичной
системе счисления.
Листинг кода:
for n in range(21):
s=str(bin(n)[2:])
for i in range(2):
if sum(list(int(x) for x in
s))%2==0:
s=s+'0'
else:
s=s+'1'
if int(s,2)>77:
print('min =',n,'r =',int(s,2))
№ 350 На вход алгоритма подаётся
натуральное число N. Алгоритм строит
по нему новое число R следующим
образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются разряды по
следующему правилу:
а) если единиц больше, чем нулей, в конец
дописывается 0,
б) иначе в начало строки дописывается две
1.
3) Повторяется пункт 2
Полученная таким образом запись является
двоичной записью искомого числа R.
Укажите минимальное число N,
при вводе которого получится значение R
больше, чем 500.
В ответе полученное число запишите в
десятичной системе.
Листинг кода:
m=500
for n in range(150):
s=str(bin(n)[2:])
for i in range(2):
if s.count('1')>s.count('0'):
s=s+'0'
else:
s='11'+s
if int(s,2)>500:
m=min(m,n)
print('n =',n,'r =',int(s,2))
print('otvet',m)
№ 5058
Алгоритм получает на вход натуральное
число N
и строит по нему новое число R
следующим образом:
1. Строится двоичная запись числа N.
2. В полученной записи все нули заменяются
на единицы, все единицы – на нули. Из полученного числа удаляются ведущие нули.
3. Результат переводится в десятичную
систему счисления.
4. Результатом работы алгоритма становится
разность исходного числа N и числа,
полученного на предыдущем шаге.
Пример. Дано число N
= 22. Алгоритм работает следующим образом:
1. Строим двоичную запись: 2210 = 101102.
2. Заменяем цифры и удаляем ведущие нули:
10110 → 01001 → 1001.
3. Переводим в десятичную систему: 10012 =
910.
4. Вычисляем разность: 22 – 9 = 13.
Результат работы алгоритма R
= 13.
При каком наименьшем N
в результате работы алгоритма получится R
= 979?
Листинг кода:
for n in range(10000):
s=str(bin(n)[2:])
st=''
for x in s:
if x=='1':st+='0'
else: st+='1'
#print(s,st)
if abs(int(st,2)-n)==979:
print(n)
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.