![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 01.05.2011
Сообщений: 2
|
![]()
Значением функции Фенвика для числа N называется максимальная степень двойки, на которую нацело делится число N. Дано число N. Определить для него значение функции Фенвика.
Пример 12 4 Циклы не использовать |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
используйте рекурсию
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
![]()
В качестве замены рекурсии можно попробовать такойподход:
2^1 = 10(2) 2^2 = 100(2) 2^3 = 1000(2) 2^4 = 10000(2) и т.д. далее, 12 = 1100 - макс степень двойки - вторая. число равно четырём. т.е., если я ничего не напутал, то значение ф-ии Фенвика для числа N равно 2 в степени равной кол-ву нулей в конце его двоичного представления. Раз циклы использовать нельзя, то сдвиг вправо тоже не получится использовать. Следовательно - побитовые операции. Но вот какие - так сходу придумать не могу. Но мне кажется, что для Int64 за 6 сравненй можно получить ответ. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
С нулями это изначально понятно. Для инт64 надо проверить как минимум возможность наличия 63 нулей отдельно... и где здесь 6 сравнений?
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция | Seferus | Общие вопросы C/C++ | 3 | 23.09.2010 02:08 |
функция | loloverg | Помощь студентам | 0 | 18.05.2010 20:12 |
Функция | Kloun1 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 24.01.2009 19:56 |
одна функция потока, а другая функция - член класса запускающего этот поток | Дмитрий_Ч | Общие вопросы C/C++ | 2 | 27.09.2007 08:50 |