powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Число единиц в двоичном представлении числа
17 сообщений из 42, страница 2 из 2
Число единиц в двоичном представлении числа
    #34864595
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
terasА все-таки, если не трудно - что вы думаете о том, что я написал? Не
было времени, не оптимально, не подходит, не работает, не понятно?
Похоже, время я неправильно оценил - оно будет меньше. Пропорционально
количеству бит.
Скорее, не очень понятно.
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864642
__Rosty__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+2Если еще точнее, то мне надо набор чисел отсортировать сначала по количеству единиц двоичного представления, внутри каждой группы - в порядке возрастания, после чего выбрать всего одно - по его порядковому номеру в получившемся массиве.Для чего нужно тогда разбивать наборы и сортировать группы?

Например первое число из 3х единиц равно 7, второе 13, третье 14.
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864651
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
__Rosty__Например первое число из 3х единиц равно 7, второе 13, третье 14.
Я согласен. С ходу, назовёте 300-е число из 3 единиц?
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864653
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
+2 __Rosty__Например первое число из 3х единиц равно 7, второе 13, третье 14.
Я согласен. С ходу, назовёте 300-е число из 3 единиц?
Тем более, что второе число из 3 единиц равно 11-ти :)
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864669
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
Еще раз попробую объяснить смысл проблемы.

Даны три числа n, m и x. По ним надо определить число, которое стоит в последовательности из этих чисел в порядке (число бит в двоичном представлении числа, сами числа по возрастанию)
Например, если дано n=8 m=55 x=42, то результат будет 46
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
  1   00000000000000000000000000001000    8 
  2   00000000000000000000000000010000    16 
  3   00000000000000000000000000100000    32 
  4   00000000000000000000000000001001    9 
  5   00000000000000000000000000001010    10 
  6   00000000000000000000000000001100    12 
  7   00000000000000000000000000010001    17 
  8   00000000000000000000000000010010    18 
  9   00000000000000000000000000010100    20 
 10   00000000000000000000000000011000    24 
 11   00000000000000000000000000100001    33 
 12   00000000000000000000000000100010    34 
 13   00000000000000000000000000100100    36 
 14   00000000000000000000000000101000    40 
 15   00000000000000000000000000110000    48 
 16   00000000000000000000000000001011    11 
 17   00000000000000000000000000001101    13 
 18   00000000000000000000000000001110    14 
 19   00000000000000000000000000010011    19 
 20   00000000000000000000000000010101    21 
 21   00000000000000000000000000010110    22 
 22   00000000000000000000000000011001    25 
 23   00000000000000000000000000011010    26 
 24   00000000000000000000000000011100    28 
 25   00000000000000000000000000100011    35 
 26   00000000000000000000000000100101    37 
 27   00000000000000000000000000100110    38 
 28   00000000000000000000000000101001    41 
 29   00000000000000000000000000101010    42 
 30   00000000000000000000000000101100    44 
 31   00000000000000000000000000110001    49 
 32   00000000000000000000000000110010    50 
 33   00000000000000000000000000110100    52 
 34   00000000000000000000000000001111    15 
 35   00000000000000000000000000010111    23 
 36   00000000000000000000000000011011    27 
 37   00000000000000000000000000011101    29 
 38   00000000000000000000000000011110    30 
 39   00000000000000000000000000100111    39 
 40   00000000000000000000000000101011    43 
 41   00000000000000000000000000101101    45 
 42   00000000000000000000000000101110    46 
 43   00000000000000000000000000110011    51 
 44   00000000000000000000000000110101    53 
 45   00000000000000000000000000110110    54 
 46   00000000000000000000000000011111    31 
 47   00000000000000000000000000101111    47 
 48   00000000000000000000000000110111    55 
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864671
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
Про четность-нечетность. Числа _все_ либо четные, либо нечетные (перехода через 0 нет).
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864679
+2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+2
Гость
Собственно, число чисел может быть от 1 до max(int), поэтому перебором очень долго работать будет - вот ищу варианты, как сделать, что бы не перебором. Есть у кого еще мнения?
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864682
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+2 wrote:
> Автор: +2
> +2
> __Rosty__
> Например первое число из 3х единиц равно 7, второе 13, третье 14.
>
>
> Я согласен. С ходу, назовёте 300-е число из 3 единиц?
>

Насколько я понимаю, тут речь идет о том, что если рассматривать числа
подряд, их не нужно сортировать. То, что я назвал упорядоченностью.

Про остальное, если мысль была примерно такая. Нарисую таблицу для
наглядности:

00000 01000 10000 11000
00001 01001 10001 11001
00010 01010 10010 11010
00011 01011 10011 11011
00100 01100 10100 11100
00101 01101 10101 11101
00110 01110 10110 11110
00111 01111 10111 11111

Каждое число можно представить в виде суммы степеней двойки (что
соответствует его представлению в обычных компьютерах). Например, 29 =
16+8+4+1. Чтобы посчитать распределение бит в 16, делим его на две
части - [0..7] и [8..15]. Замечаем, что во втором интервале [8..15]
распределение бит то-же самое, что и в [0..7] плюс фиксированное кол-во
старших бит (здесь - один). То есть, чтобы посчитать распределение для
всего числа (16) нужно узнать распределение половины интервала. Может
продолжать деление пополам до тех пор, пока не дойдём до единицы. Затем,
предположим у нас есть распределение для [0..7]: {1, 3, 3, 1}, то есть,
было встречено одно 0-битное число, три однобитных, три двухбитных, одно
трехбитное.

отсюда найдем распределение для 16 (сдвигая полученное для 8 вправо на
единицу и суммируя):
{1, 3, 3, 1} + {0, 1, 3, 3, 1} = {1, 4, 6, 4, 1}

Теперь переходим ко второму интервалу (+8), для него нам нужно уже
полученное распределение {1, 4, 6, 4, 1}, его собственное (для 8) {1, 3,
3, 1}, и знание того, что для этого интервала у нас два старших бита
неизменны (маска 10xxx):
Из {1, 3, 3, 1} с учетом одно значащего бита имеем {0, 1, 3, 3, 1},
затем, сложим левый и новый интервалы {1, 4, 6, 4, 1} + {0, 1, 3, 3, 1}
= {1, 5, 9, 7, 2}

и т.д - повторяем шаг алгоритма.

Таким образом мы можем просто перебирать интервалы чисел, отслеживая
значение в распределении в нужной позиции до тех пор, пока не увидим,
что вновь рассмотренный интервал перекрывает искомое число. После этого,
мы можем вернуться обратно к предыдущему интервалу, сократить
просматриваемый интервал в два раза (например - в приведенной интерации,
разбивая интервал 8 на два: 4+4), и опять повторить операцию для
сокращенного интервала. Итерации заканчиваются успехом тогда, когда
завиксирован переход, и длина текущего интервала равна 1 (это будет
искомое число), или мы вышли за заданные границы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34864694
__Rosty__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+2 +2 __Rosty__Например первое число из 3х единиц равно 7, второе 13, третье 14.
Я согласен. С ходу, назовёте 300-е число из 3 единиц?
Тем более, что второе число из 3 единиц равно 11-ти :)
"300-го числа из трех единиц", естественно, сходу не назову,
но нормально написанная программа найдет его за доли секунд.
И все зависит от задачи. Если нужно будет только раз определить
300-го числа из трех единиц, то это можно просто вычислить.
Но если нужно будет определить после этого и 100 и 500-й, то лучше
расчеты записать в файл или в память и по мере надобности возобновить расчет
с 300-й позиции.

На счет: "Тем более, что второе число из 3 единиц равно 11-ти"
мне тоже смешно. :)
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34866332
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если короткий программный код, то как вариант, перевести двоичное представление в строку, заменой удалить нули и затем вычислить длину строки. Если требуется быстрый способ, то это побитные операции.

Удачи.
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34867910
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TomsЕсли короткий программный код, то как вариант, перевести двоичное представление в строку, заменой удалить нули и затем вычислить длину строки.

Индус ???
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34867958
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще в базу загрузить одельные биты в виде интежеров, а потом сделать select sum(..) from ..
До этого даже индусам не додуматься
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34868572
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Индус ???

При нашей жизни, не только индусом станешь.
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34868595
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TomsПри нашей жизни, не только индусом станешьэто при какой такой жизни ?
Р2000 10000ГГц, виты супер-пупер-сата-2100, 100000 оборотов, РАМ 2048 Гб ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34868651
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Toms Gluk (Kazan)
Индус ???

При нашей жизни, не только индусом станешь.

Ага, особенно если голову не включать :)
Во избежание 100% загрузки CPU с целью оставить сей ресурс для потомков
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34869535
f i xit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А для чего все эти пляски вокруг числа единиц? Какую реальную задачу решает эта функция?
...
Рейтинг: 0 / 0
Число единиц в двоичном представлении числа
    #34869848
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f i xitА для чего все эти пляски вокруг числа единиц? Какую реальную задачу решает эта функция?

ИМХО это криптография (Генерация ключа )
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Число единиц в двоичном представлении числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]