|
ЕГЭ-22. ЗАДАНИЕ 5. ШАБЛОНЫ. Четное, то в конец полученной записи (справа) дописывается 0
5.
'''Автомат обрабатывает натуральное число N по следующему алгоритму.
1. Строится двоичная запись числа N.
2. Если N четное, то в конец полученной записи (справа) дописывается 0, в начало 1; если N— нечётное в конец и начало дописывается по две единицы.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите наименьшее число, большее 52, которое может является результатом работы автомата.''' numbers = []
for n in range(1, 1000):
if n % 2 == 0:
s = '1' + bin(n)[2:] + '0'
else:
s = '11' + bin(n)[2:] + '11'
if int(s, 2) > 52:
numbers.append(int(s, 2))
print(min(numbers))
| '''На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите такое наименьшее число R, которое превышает 43 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе счисления.
'''
for n in range(1, 1000):
s = bin(n)[2:]
if s.count('1') % 2 == 0:
s += '0'
else:
s += '1'
if s.count('1') % 2 == 0:
s += '0'
else:
s += '1'
if int(s, 2) > 43:
print(int(s, 2))
break
| ‘’’На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Сколько различных чисел, меньших 50, могут появиться на экране в результате работы автомата?
'''
k = 0
for n in range(1, 1000):
s = bin(n)[2:]
if s.count('1') % 2 == 0:
s += '0'
else:
s += '1'
if s.count('1') % 2 == 0:
s += '0'
else:
s += '1'
if int(s, 2) < 50:
k += 1
print(k)
| '''На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N без ведущих нулей.
2. Если в полученной записи единиц больше, чем нулей, то справа приписывается единица. Если нулей больше или нулей и единиц поровну, справа приписывается ноль.
Полученная таким образом запись (в ней на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Какое наибольшее число, меньшее 90, может быть получено в результате работы автомата?
'''
for n in range(1, 1000):
s = bin(n)[2:]
if s.count('1') > s.count('0'):
s += '1'
else:
s += '0'
if int(s, 2) < 90:
print(int(s, 2))
| '''Автомат обрабатывает натуральное число N < 256 по следующему алгоритму:
1) Строится восьмибитная двоичная запись числа N.
2) Инвертируются все разряды исходного числа (0 заменяется на 1, 1 на 0).
3) Полученное число переводится в десятичную систему счисления.
4) Из нового числа вычитается исходное, полученная разность выводится на экран.
Для какого значения N результат работы алгоритма равен 45?
'''
for n in range(1, 256):
s = bin(n)[2:]
s = (8 - len(s)) * '0' + s
s1 = ''
for x in s:
if x == '1':
s1 += '0'
else:
s1 += '1'
if int(s1, 2) - n == 45:
print(n)
| '''Автомат обрабатывает натуральное число N по следующему алгоритму:
1) Строится двоичная запись числа N.
2) Запись «переворачивается», то есть читается справа налево. Если при этом появляются ведущие нули, они отбрасываются.
3) Полученное число переводится в десятичную систему счисления и выводится на экран.
Какое наименьшее число, превышающее 100, после обработки автоматом даёт результат 9?
'''
for n in range(100, 1000):
s = bin(n)[2:]
if int(s[::-1], 2) == 9:
print(n)
break
| '''На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются ещё несколько разрядов по следующему правилу:
а) если N чётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи;
б) если N нечётное, то к нему справа приписываются два нуля, а слева единица.
Например, двоичная запись числа 1101 будет преобразована в 1110100.
Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Сколько существует различных чисел N, для которых результат работы данного алгоритма принадлежит отрезку [500; 700]?'''
k = 0
for n in range(1, 1000):
s = bin(n)[2:]
if n % 2 == 0:
s += bin(sum([int(i) for i in s]))[2:]
else:
s = '1' + s + '00'
if 500 <= int(s, 2) <= 700:
k += 1
print(k)
| '''Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. В конец записи (справа) дописывается вторая справа цифра двоичной записи.
3. В конец записи (справа) дописывается вторая слева цифра двоичной записи.
4. Результат переводится в десятичную систему.
При каком наименьшем числе N в результате работы алгоритма получится R > 150? В ответе запишите это число в десятичной системе счисления.
'''
for n in range(2, 1000):
s = bin(n)[2:]
s += s[-2]
s += s[1]
if int(s, 2) > 150:
print(n)
break
| |
|
|