Задание 5 - ЕГЭ
259. (Е. Джобс) Алгоритм получает на вход натуральное число N >
1 и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. В этой записи последний ноль заменяется на первые две цифры
полученной записи. Если нуля нет, алгоритм аварийно завершается.
3. Запись записывается справа налево (в обратную сторону).
4. Результат переводится в десятичную систему счисления.
Для
какого максимального значения N в результате работы
алгоритма получится число 119?
for n in
range(100,1,-1):
n2 =
bin(n)[2:]
if
n2.count('0')==0:
continue
else:
a =
n2.rfind('0')
n2 =
n2[:a] + n2[:2] + n2[(a+1):]
n2 =
n2[::-1]
r10 =
int(n2,2)
if r10==119:
print(n)
break
262. Алгоритм получает на вход натуральное число N > 1 и строит по
нему новое число R следующим образом:
1) Если
исходное число кратно 2, оно делится на 2, иначе из него вычитается 1.
2) Если
полученное на предыдущем шаге число кратно 3, оно делится на 3, иначе из него
вычитается 1.
3) Если
полученное на предыдущем шаге число кратно 5, оно делится на 5, иначе из него
вычитается 1.
4) Число,
полученное на шаге 3, считается результатом работы алгоритма.
Сколько
существует различных натуральных чисел N, при обработкекоторых получится R = 3?
k=0
for n in
range(2,1000):
if n%2==0:
n = n//2
else:
n = n-1
if n%3==0:
n = n//3
else:
n = n-1
if n%5==0:
n = n//5
else:
n = n-1
if n==3:
k+=1
print(k)
269. (В.Н. Шубинкин)На вход алгоритма подаётся натуральное число
N. Алгоритм строит по нему новое число R следующим образом.
1. Строится
двоичная запись числа N.
2. К этой
записи дописывается ещё три или четыре разряда по следующему правилу: если N нечётное,
то слева к нему приписывается "1", а справа - "11". В
противном случае слева приписывается "11", а справа "00".
Например,
N = 510 = 1012 => 1101112 = 5510
= R
Полученная
таким образом запись (в ней на три или четыре разряда больше, чем в записи
исходного числа N) является двоичной записью искомого числа R. Укажите наибольшее
число R, меньшее 127, которое может быть получено с помощью описанного
алгоритма. В ответ запишите это число в десятичной системе счисления.
for
n in range(150,0,-1):
n2 = bin(n)[2:]
if n%2==1:
n2 =
'1'+ n2 +'11'
else:
n2 =
'11'+ n2 +'00'
r =
int(n2,2)
if r<127:
print(r)
274)
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
1. Вычисляется
сумма S1 всех чётных цифр
десятичной записи числа N. Если чётных цифр нет, сумма S1 считается равной 0.
2. Вычисляется сумма S2 всех
цифр десятичной записи числа N, стоящих на позициях с
нечётными номерами. Позиции нумеруются слева направо, начиная с 1.
3. Вычисляется результат R как модуль разности S1 и S2.
Пример: Дано число N = 1234. Сумма чётных цифр S1 = 2 + 4 = 6. Сумма цифр в позициях с нечётными номерами S2 = 1 + 3 = 4. Результат работы алгоритма R = 6 – 4 = 2.
Укажите
наименьшее число, в результате обработки которого по данному алгоритму
получится число 28.
for n in
range(1, 10000000):
s1 = 0
for i in
str(n):
if
int(i) % 2 == 1:
s1
+= int(i)
s2 = 0
for i in
range(1, len(str(n)), 2):
s2 +=
int(str(n)[i])
if abs(s1 -
s2) == 28:
print(n)
break
282)
(Пробный КЕГЭ, 2022) На вход алгоритма
подаётся натуральное число N. Алгоритм строит по нему новое число R следующим
образом.
1.
Строится двоичная запись числа N.
2. К этой
записи дописываются ещё несколько разрядов по следующему правилу:
а) Если N
чётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной
записи;
6) Если N
нечётное, то к нему справа приписываются два нуля, а слева единица.
Например,
двоичная запись числа 1101 будет преобразована в 1110100.
Полученная
таким образом запись (в ней как минимум на один разряд больше, чем в записи
исходного числа N) является двоичной записью искомого числа R.
Укажите
наименьшее число N, для которого результат работы данного алгоритма больше 215.
В ответе это число запишите в десятичной системе счисления.
for
n in range(1,100):
n2 = bin(n)[2:]
k =
n2.count('1')
if n%2==0:
n2 = n2 +
bin(k)[2:]
else:
n2=
'1'+n2+'00'
r =
int(n2,2)
if r>215:
print(n)
break
290 (Е. Джобс) На вход алгоритма подаётся натуральное
девятиразрядное число N. Алгоритм строит по нему новое число R следующим
образом.
1. Вычисляется
сумма разрядов десятичной записи числа N.
2. Полученное
число переводится в двоичную систему счисления.
3. К
записи, полученной на предыдущем этапе, дописываются разряды по следующему
правилу:
a. Если
количество единиц четное дописывается единица слева и два нуля справа,
b. Если
количество единиц нечетное дописывается 10 слева и 1 справа.
3. Результат
переводится в десятичную систему и выводится на экран.
Пример.
Дано число N = 123456789. Алгоритм работает следующим образом:
1. Сумма
разрядов равна 45.
1. Двоичная
запись числа 45 = 1011012.
2. Число единиц
четное, следовательно, получаем 1+101101+00.
3. На
экран выводится число 436 = 1101101002.
Сколько
существует чисел N таких, что в результате работы автомата будет выведено число
21?
c = 0
for i in
range(100000000, 1000000000):
n =
sum(map(int, str(i)))
n2 =
bin(n)[2:]
if
n2.count('1') % 2 == 0:
n2 =
'1' + n2 + '00'
else:
n2 =
'10' + n2 + '1'
if int(n2,
2) == 21:
c += 1
print(i)
print(c)
292 (ЕГЭ-2022) На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
1.
Строится двоичная запись числа N.
2. Далее
эта запись обрабатывается по следующему правилу:
а) если
сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается
0, а затем два левых разряда заменяются на 10;
б) если
сумма цифр в двоичной записи числа нечётная, то к этой записи справа
дописывается 1, а затем два левых разряда заменяются на 11.
3. Результат
переводится в десятичную систему и выводится на экран.
Полученная
таким образом запись является двоичной записью искомого числа R.
Например,
для исходного числа 6 = 1102 результатом является число 10002
= 8, а для исходного числа 4 = 1002 результатом является число 11012
= 13.
Укажите максимальное
число N, после обработки которого с помощью этого алгоритма получается число R,
меньшее, чем 35.
for n in
range(1,10000000):
n2=bin(n)[2:]
if
n2.count('1')%2==0:
n2=n2+'0'
n2=
'10'+ n2[2:]
else:
n2=n2+'1'
n2=
'11'+ n2[2:]
R=int(n2,2)
if R<35:
print(n)
297(В.
Шубинкин) Автомат получает на вход номер банковской карты (число N из 16
цифр) и строит по нему контрольное число S следующим
образом (вариант алгоритма Лу́на):
– цифры
числа нумеруются справа налево, начиная с ноля;
– цифры, стоящие
на нечётных позициях, увеличиваются в два раза. Если при этом получается
двузначное число, его цифры складываются;
– результат
S вычисляется как сумма всех цифр на чётных позициях и
преобразованных цифр на нечётных позициях.
Например,
для числа 4096 8308 0309 8323 сумма цифр на чётных позициях (с конца)
3+3+9+3+8+3+6+0=35, сумма преобразованных цифр на нечётных позициях
4+7+0+0+0+7+9+8=35. Общая сумма S = 70.
Найдите наименьший номер банковской карты N, для которого результатом
работы алгоритма будет число 30. В ответе укажите остаток от деления найденного
числа N на 108. for i in
range(1000000000000000,10000000000000000):
su = 0
for j in range(0,16,2):
a = int(str(i)[j])*2
a = a//10+a%10
su += a
for j in range(1,16,2):
a = int(str(i)[j])
su += a
if su==30:
print(i%100000000)
break
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.