Задача к ЕГЭ по информатике на тему «арифметические выражения» №2

Сколько единиц в двоичной записи числа 2100 + 248 + 232 + 213 + 27 + 2 + 1  ?

Решение Python:

# Способ 1
a = bin(2**100 + 2**48 + 2**32 + 2**13 + 2**7 + 2 + 1)[2:]
print(a.count(’1’))

# Способ 2

a = 2**100 + 2**48 + 2**32 + 2**13 + 2**7 + 2 + 1
# Перевод выражения в 2сс
s = ’’
while a > 0:
    s = str(a % 2) + s
    a //= 2
print(s.count(’1’))

Решение руками:

В двоичной системе счисления, любое число вида 2k  имеет вид 100 ...002   , где после единицы идёт ровно k  нулей. Соответственно, сумма  100   48    32    13    7 2   + 2   + 2  + 2   + 2  + 2 + 1  не создаст переполнения ни в одном разряде, и будет иметь вид 10..010..010..010..010..112   с единицами ровно на 101, 49, 33, 14, 8, 2 и 1 месте.

Ответ: 7
Оцените статью
Я решу все!