Рваное ли число? |
Рваное ли число? |
Altair |
7.05.2009 9:30
Сообщение
#1
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Возникла такая задача:
есть число (допустим 8 разрядное, т.е. byte), необходимо определить есть ли в его двоичном представлении разрывы и по возможности определить их длину. Под разрывом понимается последовательность нулей заключенная между единицами. Например: Числа не имеющие разрывов: 000001112 001110002 имеющие разрывы размера 1: 001011112 000001012 имеющие разрывы размера 2: 001001112 000010012 Я думаю суть задачи понятна. Меня интересует не итерационный (в т.ч. и не рекурсивный) алгоритм решения. Т.е. в цикле просмотреть все разряды, используя счетчик разрывов и длинны текущего разрыва это понятно, но мне кажется данная задача имеет еще какое-то неочевидное решение. Допустим задача минимум - вообще определить есть ли хотя бы 1 разрыв ненулевой длинны. Может быть это возможно сделать используя какие-то свойства чисел? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
volvo |
7.05.2009 9:54
Сообщение
#2
|
Гость |
Олег,
вообще-то это последовательность: A089311. Судя по тому, что ничего кроме варианта с циклами для нахождения члена последовательности предложено не было, маловероятно, что такое возможно... |
Altair |
7.05.2009 10:32
Сообщение
#3
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Спасибо!
Короче буду использовать цикл. p.s. Ух ничего себе! Целая энциклопедия посвященная числовым последовательностям! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
7.05.2009 12:47
Сообщение
#4
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Вобщем если кому надо будет:
Тестовая программа
показывает, что считает вроде верно. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 11.05.2024 15:30 |