Доброго времени суток!
Текст задания:
цитата: |
(П. Волгин) В файле 17-9.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 1100 включительно. Определите сначала количество троек элементов последовательности, в которых хотя бы два числа в двоичной системе счисления имеют не менее 3 единиц и эти же два числа в двоичной системе счисления имеют как минимум один ноль, а затем максимальное число среди максимальных чисел в подходящих тройках. Под тройкой подразумевается три идущих подряд элемента последовательности. |
|
Примененное решение:
data = [int(x) for x in open('…\17-9.txt')]
ma = 0
count = 0
for i in range(2,len(data)):
troyka = [data[ i-2],data[ i-1],data[ i]]
r = 0
for _int in troyka:
binary = bin(_int)
if binary.count('1') >= 3 and binary.count('0') > 1:
r +=1
if (r>=2):
count +=1
ma = max(ma, data[ i-2],data[ i-1],data[ i])
print( count, ma )
Предпосылка вопроса:
Ответ к задаче, указанный как правильный (30 и 1027) получается, если при получении числа в двоичной системе использовать конструкцию
n2 = bin(n10),
которая возвращает результат в формате «0b…», те с префиксом-указателем того, что число является двоичным.
Если же перевести число в двоичную систему "в рукопашную", или использовать конструкцию
n2 = bin(n10)[2:]
те при отсутствия префикса «0b», после чего ответ получается (28 и 1027)
Разница в количестве троек получается из за того, что в последовательности присутствует число 127, которое в двоичной системе счисления выглядит как 0b1111111, из за чего попадает под условие binary.count('0') (
в двоичной системе счисления имеет как минимум один ноль).
Вопрос:
При решении задач ЕГЭ что подразумевать под словосочетанием "числа в двоичной системе счисления"?
Это числа вида "0b010101" или "010101"?
Суть вопроса:
Насколько корректно утверждать, что число 127 "
в двоичной системе счисления имеет как минимум один ноль", ведь этот 0 - не само число, а часть префикса-указателя двоичного счисления?