|
|
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
terasА все-таки, если не трудно - что вы думаете о том, что я написал? Не было времени, не оптимально, не подходит, не работает, не понятно? Похоже, время я неправильно оценил - оно будет меньше. Пропорционально количеству бит. Скорее, не очень понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 23:46:16 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
+2Если еще точнее, то мне надо набор чисел отсортировать сначала по количеству единиц двоичного представления, внутри каждой группы - в порядке возрастания, после чего выбрать всего одно - по его порядковому номеру в получившемся массиве.Для чего нужно тогда разбивать наборы и сортировать группы? Например первое число из 3х единиц равно 7, второе 13, третье 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 00:27:13 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
__Rosty__Например первое число из 3х единиц равно 7, второе 13, третье 14. Я согласен. С ходу, назовёте 300-е число из 3 единиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 00:43:19 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
+2 __Rosty__Например первое число из 3х единиц равно 7, второе 13, третье 14. Я согласен. С ходу, назовёте 300-е число из 3 единиц? Тем более, что второе число из 3 единиц равно 11-ти :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 00:45:17 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Еще раз попробую объяснить смысл проблемы. Даны три числа 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 01:34:32 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Про четность-нечетность. Числа _все_ либо четные, либо нечетные (перехода через 0 нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 01:36:49 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Собственно, число чисел может быть от 1 до max(int), поэтому перебором очень долго работать будет - вот ищу варианты, как сделать, что бы не перебором. Есть у кого еще мнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 01:41:38 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
+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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 01:50:35 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
+2 +2 __Rosty__Например первое число из 3х единиц равно 7, второе 13, третье 14. Я согласен. С ходу, назовёте 300-е число из 3 единиц? Тем более, что второе число из 3 единиц равно 11-ти :) "300-го числа из трех единиц", естественно, сходу не назову, но нормально написанная программа найдет его за доли секунд. И все зависит от задачи. Если нужно будет только раз определить 300-го числа из трех единиц, то это можно просто вычислить. Но если нужно будет определить после этого и 100 и 500-й, то лучше расчеты записать в файл или в память и по мере надобности возобновить расчет с 300-й позиции. На счет: "Тем более, что второе число из 3 единиц равно 11-ти" мне тоже смешно. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 02:13:44 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Если короткий программный код, то как вариант, перевести двоичное представление в строку, заменой удалить нули и затем вычислить длину строки. Если требуется быстрый способ, то это побитные операции. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 21:57:25 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Alex_TomsЕсли короткий программный код, то как вариант, перевести двоичное представление в строку, заменой удалить нули и затем вычислить длину строки. Индус ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 09:25:26 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Можно еще в базу загрузить одельные биты в виде интежеров, а потом сделать select sum(..) from .. До этого даже индусам не додуматься Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 09:46:44 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Индус ??? При нашей жизни, не только индусом станешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 12:29:08 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Alex_TomsПри нашей жизни, не только индусом станешьэто при какой такой жизни ? Р2000 10000ГГц, виты супер-пупер-сата-2100, 100000 оборотов, РАМ 2048 Гб ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 12:33:37 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
Alex_Toms Gluk (Kazan) Индус ??? При нашей жизни, не только индусом станешь. Ага, особенно если голову не включать :) Во избежание 100% загрузки CPU с целью оставить сей ресурс для потомков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 12:43:49 |
|
||
|
Число единиц в двоичном представлении числа
|
|||
|---|---|---|---|
|
#18+
А для чего все эти пляски вокруг числа единиц? Какую реальную задачу решает эта функция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 16:17:36 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34867910&tid=2028005]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
280ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 551ms |

| 0 / 0 |
