|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.05.2011, 20:06 | #1 |
Новичок
Джуниор
Регистрация: 01.05.2011
Сообщений: 2
|
Функция Фенвика
Значением функции Фенвика для числа N называется максимальная степень двойки, на которую нацело делится число N. Дано число N. Определить для него значение функции Фенвика.
Пример 12 4 Циклы не использовать |
01.05.2011, 22:04 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,726
|
используйте рекурсию
|
03.05.2011, 20:40 | #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 сравненй можно получить ответ. |
04.05.2011, 08:36 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,726
|
С нулями это изначально понятно. Для инт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 |