Я недавно начал изучать питон и готовлюсь к егэ нужна помощь
for n in range(100, 1, -1):
s = bin(n)[2:]
s = str(s)
s += str(s.count ('1') % 2)
s += str(s.count ('1') % 2)
r = int(s, 2)
if r < 90:
print (r)
break
вот цикл
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
Строится двоичная запись числа N.
Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2.
Предыдущий пункт повторяется для записи с добавленной цифрой.
Какое наибольшее число, меньшее 90, может появиться на экране в результате работы автомата?
Результат переводится в десятичную систему и выводится на экран.
Какое наибольшее число, меньшее 90, может появиться на экране в результате работы автомата?
вот задача
и я не могу понять почему в начальной строке берется 100 1 и -1 зачем -1
str(s.count (‘1’) и зачем здесь 1
для двоичного числа количество единиц в двоичной записи равно
сумме всех цифр.
так что трюк с подсчётом единичек используется для определения суммы всех цифр в строке.
собственно, вот тут в подобной задаче используется прямая функция для суммирования:
def f(s):
summa = 0
for i in range(len(s)):
summa += int(s[i])
return summa
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
summa = f(s)
s = s + str(summa % 2)
summa = f(s)
s = s + str(summa % 2)
r = int(s, 2) # перевод в десятичную систему
if r > 93:
print(r)
break
на строчку if r > 93 - не обращайте внимания, 93 в условиях той задачи, откуда я взял код решения
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s += str(s.count("1") % 2)
s += str(s.count("1") % 2)
r = int(s, 2) # перевод в десятичную систему
if r > 77:
print(n)
break
а почему здесь только 1 и 100 в цикле
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 77. В ответе это число запишите в десятичной системе счисления.
вот задача
и что за функция лен в твоей задаче
Если один аргумент, то это конец (начало по умолчанию 0, шаг по умолчанию 1), если два аргумента, то это начало и конец (а шаг по умолчанию 1), а если три, то начало, конец и шаг (справка range).