Подсчитать количество единиц в двоичной записи огромного числа
Задача: Сколько единиц содержится в двоичной записи значения выражения: 4^2020 + 2^2017 – 15? Так как число превышает допустимое значение типа double, моя программа выводит неправильный ответ: vr = infinity, count = 1. (count должен равняться 2015)
double vr = Math.Pow(4, 2020) + Math.Pow(2, 2017) - 15; // наше выражение string b = Convert.ToString((int)vr, 2); int count = 0; //счётчик единиц for (int i = 0; i < b.Length; i++) < if (b[i] == '1') < count++; >> Console.WriteLine(count);
Отслеживать
задан 1 мая 2023 в 9:42
71 5 5 бронзовых знаков
Воспользуйтесь BigInteger.Pow, а не Math.Pow
1 мая 2023 в 9:53
Считать большие числа не надо, это задача на логику, решается в уме
1 мая 2023 в 10:03
@Kalmankantaja, спасибо, ответ получился правильный!
1 мая 2023 в 10:46
добавь ожидаемый результат в вопрос
1 мая 2023 в 10:47
Остаётся понять, является ли эта задача хорошей учебной задачей по программированию.
1 мая 2023 в 11:45
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
@MBo! В двоичной записи числа 4 одна единица (100), и в какую целую степень его не возводи, так одна единица и останется. Например: 4^2=16 (10000). Тоже самое касается и двойки. Сразу преобразуем 4^2020 в 2^4040.
Далее, в двоичной системе. Если к одному числу вида 1 с нулями добавить меньшее такого же вида, то получится 2 единицы, например: 10000+100=10100. Теперь найдём разность большого числа и 15, например: 1000 0000 0000-1111=111 1111 0001, то есть такое вычитание добавляет Z-4 единиц, где Z — степень наименьшей единицы в числе, которая равна степени меньшего числа. Итого ответ равен 2+Z-4=Z-2
Вот и ответ: 2015.
И вправду ошибка была, даже две.
Отслеживать
ответ дан 1 мая 2023 в 11:10
4,269 2 2 золотых знака 3 3 серебряных знака 19 19 бронзовых знаков
Где-то просчитались, т. к. правильный ответ — 2015.
1 мая 2023 в 11:14
Там не разность, а сумма двух больших степеней, бОльшая просто добавит одну единицу
1 мая 2023 в 11:39
@MBo так и есть. Как говорится, смотришь в книгу — видишь (фи)совсем другое.
1 мая 2023 в 11:42
В десятичной записи числа 4 — в десятичной записи в числе 4 — нет единиц
1 мая 2023 в 14:39
Решение с использованием класса BigInteger:
BigInteger vr = BigInteger.Pow(4, 2020) + BigInteger.Pow(2, 2017) -15; Console.WriteLine(BigInteger.PopCount(vr));
Отслеживать
ответ дан 1 мая 2023 в 10:55
71 5 5 бронзовых знаков
1 мая 2023 в 12:47
- c#
- консоль
- числа
- системы-счисления
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.29.8372
Сколько единиц в двоичной записи числа 243. У меня получилось 6, в пособии по ЕГЭ 5.
Делим число на 2 и выписываем остатки
243 = 121·2 + 1
121 = 60·2 + 1
60 = 30·2 + 0
30 = 15·2 + 0
15 = 7·2 + 1
7 = 3·2 + 1
3 = 1·2 + 1
Последний множитель перед 2 равный 1 записываем первым.
Затем записываем найденные остатки в обратном порядке.
Получаем: 11110011
Источник: [ссылка появится после проверки модератором]
Остальные ответы
Двоичная система счисления
Какое целое число от 4 до 8 содержит ровно три единицы в двоичной системе счисления? Если таких чисел несколько, укажите наибольшее из них.
Так как мы ищем наибольшее число, начнем переводить в двоичную систему счисления с конца.
Итак, мы нашли искомое число, и оно является максимальным среди удовлетворяющих условиям (возможно, и единственное). Значит, оно идет в ответ.
Задание 2 #9880
Сколько единиц в двоичной записи числа 37?
Переведем 37 в двоичную систему счисления. Можем сделать это двумя способами: 1) делить на 2 и смотреть на остатки, 2) разложить число на степени двойки.
1) Будем делить 37 на 2 и запоминать остатки от деления. Запись 37 % 2 = 1 означает, что остаток от деления 37 на 2 = 1.
\(\frac\) = 18 + 0,5. Запоминаем 37 % 2 = 1. Дальше делим полученную целую часть.
\(\frac\) = 9. Запоминаем 18 % 2 = 0.
\(\frac\) = 4 + 0,5. Запоминаем 9 % 2 = 1.
\(\frac\) = 2. Запоминаем 4 % 2 = 0.
\(\frac\) = 1. Запоминаем 2 % 2 = 0.
\(\frac\) = 0 + 0,5. Запоминаем 1 % 2 = 1.
Итак, мы запомнили 1, 0, 1, 0, 0, 1. Теперь записываем эти остатки в обратном порядке и получаем нужное число: 100101.
2) Запишем все степени двойки, не превосходящие 37, с соответствующими коэффициентами:
37 = 1 \(\cdot\) \(2^5\) + 0 \(\cdot\) \(2^4\) + 0 \(\cdot\) \(2^3\) + 1 \(\cdot\) \(2^2\) + 0 \(\cdot\) \(2^1\) + 1 \(\cdot\) \(2^0.\)
Теперь запишем эти коэффициенты. Это 100101.
Теперь считаем количество единиц в полученной записи. Это 3.
Сколько единиц получилось в двоичной записи числа?
Я вот сижу сейчас и мучаю задачу, подобную этой:
Число X=(32^32+4^4-1)*16^16+8^8-1 перевели из десятичной в двоичную систему счисления. Сколько единиц получилось в двоичной записи числа? В ответе укажите целое число.
И там должно получиться 33.
Мои результаты меня пока не особо радуют: у меня получается 31. Может, кто-нибудь подскажет, где я неправильно что-то делаю.
Мой ход решения:
1) Привожу всё к 2 в n-ной степени
(2^160+2^8-2^0)*2^64+2^24-2^0
2) Раскрываю скобки
2^224+2^72-2^64+2^24-2^0
3) Начинаю вычитать по действиям в двоичной системе, расставив скобки 2^224+(2^72-2^64)+(2^24-2^0) таким образом (просто так удобнее показалось)
Считаю, что 2^72 — это 1 и 72 нуля в двоичной системе, а 2^64 это 1 и 64 нуля, отсюда получаю, что если из одного числа вычесть другое, то получится
100000000!0. 000000 (1 и 8 нулей до ! и ещё 64 нуля после !)
-_______10. 000000 (1 под 9ым разрядом и потом соответственно ещё 64 нуля)
Выходит число, у которого 64+1=65 нулей на конце (64 получается при вычитании 0-0 и ещё однин, когда мы разряд занимаем 1-1) и 7 единиц в начале ( 1-0 )
Аналогично 2^24-2^0= числу с одним нулем на конце и 23 единицами в начале.
2^224 число с 1 единицей и 224 нулями.
3) Итого при сложении этих трех полученных чисел получаю, 7+23+1=31 единица
Ну вот где я две единицы потеряла?((
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Сколько единиц в двоичной записи числа 2^2018 — 2017?
Сколько единиц в двоичной записи числа 2^2018 — 2017?
Определить сколько единиц в двоичной записи десятичного числа (1 секунда)
Нужно определить сколько единиц в двоичной записи десятичного числа На вход число в 10^9.
Посчитать сколько единиц есть в записи числа в двоичной системе счисления
Дано число N в десятичной системе счисления. Нужно посчитать сколько единиц есть в записи этого.