|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.10.2011, 13:53 | #1 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 2
|
Как найти наибольшую степень двойки, не превышаюшую определенного числа N (Паскаль)
kak naiti naibolshuyu stepen' dvoiki ne previshauyshuyu opredelennogo chisla n.
Naprimer esli chislo 129 ,to togda programka dolzna pokazat' 128,to yest 2 v 7moi stepeni. |
11.10.2011, 14:10 | #2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
Для возведения двойки в степень n можно воспользоваться следущим выражением: round(exp(n*ln(2)))
|
11.10.2011, 14:43 | #3 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 2
|
chtobi menshe opredelenogo chisla naprimer menshe 129 bilo 128.
|
11.10.2011, 14:48 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, можно и перебором найти требуемое решение:
Код:
Последний раз редактировалось Serge_Bliznykov; 11.10.2011 в 14:52. |
11.10.2011, 16:17 | #5 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
да, перебором, но не того.
Степень двойки это есть один установленный бит. 2,4,8,16,32,64,128,256,512.... и т.д. этот ряд все наверное помнят? таким образом для решения задачи надо найти всего то, максимально установленный бит в числе. индекс бита и есть степень. Код:
Русский язык не мой конёк
Последний раз редактировалось Neobrat; 11.10.2011 в 16:23. |
11.10.2011, 18:29 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Neobrat
решение красивое (правда, не вижу принципиальных отличий от своего перебора. Ведь у меня тоже только степени двойки перебираются!) Но это не ПАСКАЛЬ! (Это Delphi) на Паскале ваше решение можно записать так: Код:
|
12.10.2011, 10:03 | #7 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
Принципиальных различий и быть не может, из за математического представления степени двойки.
Есть только разница в подходе поиска этого числа. Вы ищите степень двойки меньше чем введенное число, я же ищу старший установленный бит в веденном числе.
Русский язык не мой конёк
|
12.10.2011, 11:15 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
12.10.2011, 12:08 | #9 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Что-то вы всё мудрите-мудрите, ещё может побитовый сдвиг вспомним )) задача решается логарифмом ))
Код:
Последний раз редактировалось phomm; 12.10.2011 в 12:13. |
12.10.2011, 14:08 | #10 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
phomm
Любая задача имеет несколько решений, и эта задача не исключение. Вы приводите общее-математическое решение задачи. мы приводим "программистское" - частное решение, именно для основания 2. и вы не поверите, но мы используем побитовый сдвиг(shl).
Русский язык не мой конёк
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Квадраты нескольких 3-xзначных чисел оканчиваются 3 цифрами, которые составляют исходные числа. Найти эти числа. Паскаль | zig1 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 12.10.2011 09:32 |
найти определённые простые числа в интервале [Паскаль] | Юкоша | Помощь студентам | 4 | 24.12.2010 15:57 |
Найти наибольшую по длине последовательность простых чисел в массиве | Лесная Эльфийка | Помощь студентам | 2 | 14.12.2010 16:24 |
Паскаль. Из заданного числа найти сумму его цифр | Matlashov | Помощь студентам | 8 | 26.11.2009 14:27 |