Ошибка.
Попробуйте повторить позже
Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа .
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления полученной суммы на .
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число . Алгоритм работает следующим образом:
1. Двоичная запись числа .
2. Сумма цифр двоичной записи , остаток от деления на равен , новая запись .
3. Сумма цифр полученной записи , остаток от деления на равен , новая запись .
4. На экран выводится число .
Какое наименьшее число, большее вашего балла на ЕГЭ (), может появится на экране в результате работы автомата?
for i in range(1000000): s = bin(i)[2::] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) if int(s, 2) > 100: print(int(s, 2)) break
Аналитическое решение:
Имеется число . Все числа в двоичной записи складываются и добавляется остаток от деления на 2 этой суммы, то есть цифра 0 или 1, значит если сумма чётна, то дописываем 0, иначе 1. Если мы дописали единичку, то количество единиц увеличится на 1, а значит, что после этого сумма будет чётна, и уже в следующем пункте мы допишем нолик. Если мы дописали ноль, то сумма числа не меняется, а значит в следующем пункте мы также допишем нолик. Значит число в 2 СС заканчивается на 00 или 10.
Нам необходимо найти число, большее, чем 100, которое в 2 СС заканчивается на 00 или 10. Будем перебирать с минимального.
Подойдет ли число ? Нет, оно кончается на 01.
Подойдет ли число ? Да, так как оно заканчивается на 10. Значит это и есть наш ответ.
Ошибка.
Попробуйте повторить позже
Автомат обрабатывает натуральное число по следующему алгоритму:
- Строится двоичная запись числа .
- Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на .
- Предыдущий пункт повторяется для записи с добавленной цифрой.
- Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число . Алгоритм работает следующим образом:
- Двоичная запись числа .
- Сумма цифр двоичной записи , остаток от деления на равен , новая запись .
- Сумма цифр полученной записи , остаток от деления на равен , новая запись .
- На экран выводится число .
Какое наименьшее число, большее , может появиться на экране в результате работы автомата??
for i in range(1000000): s = bin(i)[2:] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) if int(s, 2) > 1024: print(int(s, 2)) break
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
- Строится двоичная запись числа .
- К этой записи дописывается (дублируется) последняя цифра.
- Затем справа дописывается , если в двоичном коде числа чётное число единиц, и , если нечётное.
- К полученному результату справа дописывается , если количество единиц получившегося числа нечётно, иначе дописывается .
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа . Укажите минимальное число , после обработки которого автомат получает число, большее . В ответе это число запишите в десятичной системе.
for n in range(1, 1000): r = bin(n)[2:] r += r[-1] if bin(n)[2:].count(’1’) % 2 == 0: r += ’0’ else: r += ’1’ if r.count(’1’) % 2 == 0: r += ’0’ else: r += ’1’ if int(r, 2) > 120: print(n) break
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
- Строится двоичная запись числа .
- К этой записи справа дописывается единица.
- Затем справа дописывается бит чётности: , если в двоичном коде полученного числа чётное число единиц, и , если нечётное.
- К полученному результату дописывается ещё один бит чётности.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа . Какое минимальное число , большее , может быть получено в результате работы автомата?
Решение программой:
for i in range(1, 1000000): s = bin(i)[2::] s += ’1’ if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ # второй if не нужен, потому что всегда будет дописываться 0 # подумайте почему) if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ if int(s, 2) > 212: print(int(s, 2)) break
Аналитическое решение:
Каким бы не было число, на втором шаге к нему всегда дописывается единица, так что давайте называть это число «изначальным».
Если изначальное число имеет чётное количество единиц, то после добавления нуля количество единиц не изменится, а потому на следующем шаге также добавится ноль. Итого к числу допишут два нуля.
Если изначально число имеет нечётное количество единиц, то после добавления единицы количество единиц увеличится на , что означает, что количество единиц станет чётным числом, а значит на следующем шаге уже будут добавлять ноль. Итого к числу допишут единицу и ноль.
Значит мы будем проверять только числа, которые кончаются на или .
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? В двоичной СС оно выглядит как . Так что вполне возможно. Если откинем последние три цифры, то у нас останется число , добавим к нему единицу и получим число , у него чётное число единиц, а значит после работы алгоритма к нему дописали бы два нуля, но мы откинули , а значит это не то число, которое нам нужно.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? В двоичной СС оно выглядит как . Так что вполне возможно. Если откинем последние три цифры, то у нас останется число , добавим к нему единицу и получим число , у него нечётное число единиц, а значит после работы алгоритма к нему дописали бы единицу и ноль, но мы откинули , а значит это не то число, которое нам нужно.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число ? В двоичной СС оно выглядит как . Так что вполне возможно. Если откинем последние три цифры, то у нас останется число , добавим к нему единицу и получим число , у него нечётное число единиц, а значит после работы алгоритма к нему дописали бы единицу и ноль, а мы откинули как раз , значит – это интересующее нас число.
Ошибка.
Попробуйте повторить позже
Автомат обрабатывает натуральное число по следующему алгоритму:
- Строится двоичная запись числа .
- В конец двоичной записи добавляются две цифры: — если четное, — если нечетное.
- Результат переводится в десятичную систему, затем от числа отнимается минимальное количество бит, которым можно закодировать чисел.
- Полученное число выводится на экран.
Пример. Дано число Алгоритм работает следующим образом:
- Двоичная запись числа
- В конец добавляются цифры , так как — четное число. Получается .
- Результат переводится в десятичную систему. . От отнимается число , так как это минимальное количество бит, которым можно закодировать чисел.
- На экран выводится 221.
Укажите минимальное , при котором автомат выведет на экран число .
for i in range(10000): s = bin(i)[2::] if i % 2 == 0: s += ’11’ else: s += ’00’ x = int(s, 2) - len(bin(i-1)[2::]) # n - натуральные # Например, n = 5 # 000 = 1; 001 = 2; 010 = 3; # 011 = 4; 100 = 5 if x == 126: print(i)
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1)Строится двоичная запись числа N.
2)К этой записи дописываются справа ещё два разряда по следующему правилу:
а)Дописывается справа бит чётности: 0, если в двоичном коде числа N было чётное число единиц, и 1, если нечётное;
б)К полученному результату дописывается ещё один бит чётности
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число, большее, чем 78. В ответе это число запишите в десятичной системе.
for i in range(1, 1000): s = bin(i)[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) > 78: print(i) break
Аналитическое решение:
Если изначальное число имеет чётное количество единиц, то после добавления нуля количество единиц не изменится, а потому на следующем шаге также добавится ноль. Итого к числу допишут два нуля.
Если изначально число имеет нечётное количество единиц, то после добавления единицы количество единиц увеличится на 1, что означает, что количество единиц станет чётным числом, а значит на следующем шаге уже будут добавлять ноль. Итого к числу допишут единицу и ноль.
Значит мы будем проверять только числа, которые кончаются на или .
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после алгоритма не могло.
Могло ли получиться число 80? В двоичной СС оно выглядит как . Так что вполне возможно. Если откинем последние две цифры, то у нас останется число , у него чётное число единиц, а значит после работы алгоритма к нему дописали бы два нуля, но это как раз те самые цифры, которые мы откинули, значит и есть искомое число.
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа
2) К этой записи дописываются разряды по следующему правилу:
а) если число чётное, то к двоичной записи числа в конце дописывается
б) если число нечётное, то к двоичной записи числа в конце дописывается
Полученная таким образом запись является двоичной записью искомого числа . Укажите наибольшее число меньшее , которое может получиться после обработки этого алгоритма. В ответе запишите это число в десятичной записи.
Рассмотрим первое число . Переведем в двоичную сс и получим . Отрубим две последние цифры и получим число нечетное, а значит должно было добавиться . Значит не подходит.
Похоже это число мы сразу можем угадать. У нас есть и к нему должно добавить . Получаем число . (Число также не подходит т.к. )
Решение №2
ans = 0 for i in range(1000): s = bin(i)[2::] if i % 2 == 0: s += ’11’ else: s += ’01’ if int(s, 2) < 128: ans = max(ans, int(s, 2)) print(ans)
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
- Строится двоичная запись числа .
-
К этой записи дописываются ещё два разряда по следующему правилу:
- складываются все цифры двоичной записи, и остаток от деления этой суммы на дописывается в конец числа (справа).
- над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на .
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа . Какое наибольшее число, меньшее , может быть получено в результате работы автомата?
ans = 0 for i in range(1, 1000): s = bin(i)[2:] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) if int(s, 2) < 77 and int(s, 2) > ans: ans = int(s, 2) print(ans)
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
1) Строится двоичная запись числа
2) К этой записи дописываются разряды по следующему правилу:
а) если число чётное, то к двоичной записи числа в конце дописывается
б) если число нечётное, то к двоичной записи числа в конце дописывается
Полученная таким образом запись является двоичной записью искомого числа . Укажите наибольшее число , меньшее , которое может получиться после обработки этого алгоритма. В ответе запишите это число в десятичной записи.
Решение №1
Рассмотрим первое максимально возможное число , меньшее , а именно . Переведем в двоичную систему счисления и получим . Уберём две последние цифры и получим нечетное число, а значит к исходному числу должно было добавиться . Значит, число не могло получиться в результате работы алгоритма.
Теперь мы сразу можем угадать число . У нас есть , и к нему нужно добавить . Получаем число .
Решение №2
ans = 0 for i in range(1000): s = bin(i)[2::] if i % 2 == 0: s += ’11’ else: s += ’01’ if int(s, 2) < 128: ans = max(ans, int(s, 2)) print(ans)
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим
образом.
1) Строится двоичная запись числа .
2) К этой записи дописываются справа ещё два разряда по следующему правилу:
- а) складываются все цифры двоичной записи, и остаток от деления суммы на дописывается в конец числа (справа). Например, запись преобразуется в запись ;
- б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на .
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа .
Укажите минимальное число , которое превышает и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.
for i in range(1, 100000): s = bin(i)[2:] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) r = int(s, 2) if r > 103: print(r) break
Ошибка.
Попробуйте повторить позже
Автомат обрабатывает натуральное число по следующему алгоритму:
- Строится двоичная запись числа .
- Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на .
- Предыдущий пункт повторяется для записи с добавленной цифрой.
- Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число . Алгоритм работает следующим образом:
- Двоичная запись числа .
- Сумма цифр двоичной записи , остаток от деления на равен , новая запись .
- Сумма цифр полученной записи , остаток от деления на равен , новая запись .
- На экран выводится число .
Какое наименьшее число, большее , может появиться на экране в результате работы автомата?
for n in range(1, 10000): r = bin(n)[2:] r = r + str(r.count(’1’) % 2) r = r + str(r.count(’1’) % 2) r = int(r, 2) if r > 150: print(r) break
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа .
2. К этой записи дописывается единица.
3. Затем справа дописывается бит чётности: , если в двоичном коде полученного числа чётное число единиц, и , если нечётное.
4. К полученному результату дописывается ещё один бит чётности.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа . Какое минимальное число , большее , может быть получено в результате работы автомата?
for n in range(1, 100): s = bin(n)[2:] # перевод в двоичную систему s = str(s) s += ’1’ if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ r = int(s, 2) # перевод в десятичную систему if r > 168: print(r) break
Аналитическое решение:
Имеется число . В любом случае к нему дописывается единица, поэтому будем рассуждать, будто бы число и было таким(с дописанной единицей) изначально. Если количество единиц чётно, то и сумма цифр числа чётна, а значит к числу допишется ноль. Если же количество единиц нечётно, то и сумма цифр числа нечётна, а значит к числу допишется единица. Если мы дописали единичку, то количество единиц увеличится на 1, а значит, что после этого сумма будет чётна, и уже в следующем пункте мы допишем нолик. Если мы дописали ноль, то сумма числа не меняется, а значит в следующем пункте мы также допишем нолик. Значит число в 2 СС заканчивается на 100 или 110 (учли, что мы изначально при любых обстоятельствах дописываем единицу, а потом 00 или 10).
Нам необходимо найти число, большее, чем 168, которое в 2 СС заканчивается на 100 или 110. Будем перебирать с минимального.
Подойдет ли число ? Нет, оно кончается на 001.
Подойдет ли число ? Нет, оно кончается на 010.
Подойдет ли число ? Нет, оно кончается на 011.
Подойдет ли число ? Да, так как оно заканчивается на 100. Значит это и есть наш ответ.
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим образом.
- Строится двоичная запись числа .
-
К этой записи дописываются ещё два разряда по следующему правилу:
- cкладываются все цифры двоичной записи числа , и остаток от деления суммы на дописывается в конец числа (справа). Например, запись числа преобразуется в запись ;
- над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на .
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа .
Укажите такое наименьшее число , которое превышает и может являться результатом работы этого алгоритма. В ответе это число запишите в десятичной системе счисления.
Аналитическое решение:
Заметим, что если число единиц в двоичной записи нечётное, то в первый раз допишется единица, а затем число единиц
станет чётным, и во второй раз мы допишем ноль. Если же число единиц в двоичной записи чётное, то в первый раз мы
допишем ноль, затем количество единиц не изменится, и мы снова допишем ноль. Таким образом, в любом случае
последняя цифра числа — ноль. Напишем программу:
for i in range(1, 100): s = bin(i)[2::] a = 0 for j in range(len(s)): a += int(s[j]) if a % 2 == 0: s += ’00’ else: s += ’10’ if int(s, 2) > 43: print(int(s, 2)) break