Форум » Обработка целых чисел » Задание 17 задача 195 » Ответить

Задание 17 задача 195

gk.aledar: Доброго времени суток! Текст задания: [quote](П. Волгин) В файле 17-9.txt содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 1100 включительно. Определите сначала количество троек элементов последовательности, в которых хотя бы два числа в двоичной системе счисления имеют не менее 3 единиц и эти же два числа в двоичной системе счисления имеют как минимум один ноль, а затем максимальное число среди максимальных чисел в подходящих тройках. Под тройкой подразумевается три идущих подряд элемента последовательности.[/quote] Примененное решение: [pre2] 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 ) [/pre2] Предпосылка вопроса: Ответ к задаче, указанный как правильный (30 и 1027) получается, если при получении числа в двоичной системе использовать конструкцию n2 = bin(n10), которая возвращает результат в формате «0b…», те с префиксом-указателем того, что число является двоичным. Если же перевести число в двоичную систему "в рукопашную", или использовать конструкцию n2 = bin(n10)[2:] те при отсутствия префикса «0b», после чего ответ получается (28 и 1027) Разница в количестве троек получается из за того, что в последовательности присутствует число 127, которое в двоичной системе счисления выглядит как 0b1111111, из за чего попадает под условие binary.count('0') (в двоичной системе счисления имеет как минимум один ноль). Вопрос: При решении задач ЕГЭ что подразумевать под словосочетанием "числа в двоичной системе счисления"? Это числа вида "0b010101" или "010101"? Суть вопроса: Насколько корректно утверждать, что число 127 "в двоичной системе счисления имеет как минимум один ноль", ведь этот 0 - не само число, а часть префикса-указателя двоичного счисления?

Ответов - 3

gk.aledar: И, кстати, почему bin(127) = 0b1111111? 0b1111111 должно быть вроде 255 в десятеричной...

cabanov.alexey: 255 это 8 единиц, а тут 7. Вообще согласен, префикс не должен влиять на ответ.

pVoglin: Префикс не влияет на ответ. Число 127 в двоичной системе счисления не имеет нуля. Здесь под нулями имеются в виду значащие нули. Мое решение: def count1(n): count = 0 while n>0: if n % 2 == 1: count +=1 n //= 2 return count def count0(n): count = 0 while n>0: if n % 2 == 0: count += 1 n //=2 return count f = open("1.txt") a = [] m = 0 ms = 0 k = 0 for i in f: a.append(int(i)) for i in range(len(a)-2): if (count1(a[i ]) >=3 and count1(a[i+1]) >=3 and count0(a[i ])>0 and count0(a[i+1]) > 0) or (count1(a[i+1])>=3 and count1(a[i+2])>=3 and count0(a[i+1])>0 and count0(a[i+2]) > 0) or (count1(a[i ])>=3 and count1(a[i+2]) >= 3 and count0(a[i ])>0 and count0(a[i+2]) > 0): k += 1 m = max(a[i ],a[i+1],a[i+2]) if m>ms: ms = m print(k,ms)




полная версия страницы