
Сколько единиц в двоичной записи числа 8^4024 – 4^1605 + 2^1024 – 126? Для решения задачи, я
написал следующую программу на языке Python: num = str(bin((8**4024)-(4**1605)+(2**1024)-126)) container = 0 for i in range(len(num)): if num[i]=="1": container+=1 print(container) Проверив программу на других подобных заданиях, решил что она рабочая. Ответом служит число 9880. Хочу узнать, как получить такой же ответ на бумаге? Желательно с подробным объяснением.

Ответы на вопрос

Ответ:
(см. объяснение)
Объяснение:
Поскольку после предложенного автору вопроса варианта знакомства с достаточно формальным объяснением на РешуЕГЭ, у него остались вопросы, попробую объяснить максимально неформально.
Итак, начнем:
Как можно заметить, первым шагом мы перешли к степеням двойки.
Теперь проведем аналогию. У нас система счисления привычная нам десятичная. И у нас и так далее. Возникает вопрос: "А не будет ли в двоичной сс что-то похожее?" Ответ очевиден: будет. Действительно,
.
Тогда что такое ? Правильно. Это
и еще
нулей после него в двоичной сс. Возникает новый вопрос: "А можно ли это как-то использовать?" Ответ: да, можно, а более того и нужно. Сколько будет
в двоичной сс? Конечно же
(единица, 4 нуля, единица, 5 нулей). Почему так? потому что из вышесказанного следует
, а
. Такое сложение делается в уме. Его результат ясен сразу, что является главным достоинством в нашем деле. Теперь к нашему примеру. Забудем пока про вычитание. Что будет, если вычислить
? Как уже догадался читатель, ответ будет такой формы:
. Я намеренно не пишу все нули и ставлю троеточия. А зачем их писать? Выписываем только те части, которые нам нужны. Знаем, что они там есть и хорошо. Бумагу надо экономить! Просто укажем сколько их там, например, вот таким способом:
Теперь к вычитаниям. Нам надо вычесть из этого числа и
.
Снова отойдем от задачи, чтобы понять идею. У нас есть выражение . Как это считать? Как уже привыкли столбиком. Будет
. В нашем случае я всегда вычитаю пошагово. То есть сначала
, потом
.
Здесь неудобно писать формулы, прошу посмотреть прикрепленный файл. Там процесс вычитания описан несколько более подробно, чем так, как я бы решал эту задачу с набитой рукой. Как видим, ответ получился .
Я старался объяснить максимально просто, понятно и на вашем языке. Надеюсь, что у меня это получилось и я не запутал вас окончательно. Вообще, задача несложная и решается за минуту спокойно, а объяснение вышло громоздкой отчасти из-за обилия отступлений.
Задание выполнено!
Комментарий:
Позволю себе заметить, что автор, судя по всему не зная питона, берется программировать на нем, а это плохо.
Почему бы не написать что-то такое?
print(str(bin((8**4024)-(4**1605)+(2**1024)-126)).count('1'))
Не понимаю уместности цикла for.




Для получения такого ответа на бумаге, вы можете использовать следующий метод.
Сначала найдем значение выражения (8^4024) – (4^1605) + (2^1024) – 126. Для этого вычислим каждое из слагаемых отдельно.
1. Вычислим значение 8^4024. Для этого умножим 8 на само себя 4024 раза. Это можно сделать с помощью цикла, но так как это займет много времени, лучше воспользоваться функцией возведения в степень в Python: pow(8, 4024). Результат этого выражения будет очень большим числом.
2. Вычислим значение 4^1605. Аналогично, умножим 4 на само себя 1605 раз. Результат также будет очень большим числом.
3. Вычислим значение 2^1024. Также умножим 2 на само себя 1024 раза.
4. Вычтем из этого значения 126.
После всех этих вычислений получим очень большое число.
Затем преобразуем полученное число в двоичную запись. Для этого можно использовать метод деления на 2 и записи остатков.
После этого посчитаем количество единиц в двоичной записи полученного числа. Для этого пройдемся по всем цифрам в двоичной записи и посчитаем количество единиц.
Этот метод позволит вам получить такой же ответ, как и ваша программа на Python, но на бумаге.


Похожие вопросы

Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili