Спустя 5 минут, 9 секунд (19.09.2012 - 14:47) Игорь_Vasinsky написал(а):
Цитата |
15 делиться на 2, ответ будет 5. |
ну я бы понял 7 или 8, но как 5 ????
ceil()
floor()
Спустя 3 минуты, 4 секунды (19.09.2012 - 14:50) cyberside написал(а):
Игорь_Vasinsky, 15 - 8 - 4 - 2 - 1
Спустя 56 минут, 11 секунд (19.09.2012 - 15:46) Au196967 написал(а):
15-7.5-3,75-1,875-0,9375- дальше продолжать?))
Ну если серьезно то
ceil - для округления
Ну если серьезно то
ceil - для округления
Спустя 5 минут, 25 секунд (19.09.2012 - 15:52) cyberside написал(а):
Au196967, Необходимо узнать сколько раз 15 делиться на 2, а не округлить...
Спустя 8 минут, 31 секунда (19.09.2012 - 16:00) twin написал(а):
<?php
echo $start = 15;
$denominator = 2;
do
{
echo ' - ';
echo $start = round($start / $denominator);
}while($start > 1);
Спустя 33 минуты, 10 секунд (19.09.2012 - 16:33) sergeiss написал(а):
Наиболее правильное решение вот (вроде бы так :)):
$n=15;
$result=round( log( $n,2)+1, 0 );
Спустя 34 минуты, 53 секунды (19.09.2012 - 17:08) Hello написал(а):
Цитата (cyberside @ 19.09.2012 - 14:42) |
Необходимо узнать, например сколько раз 15 делиться на 2, ответ будет 5. |
Неправильный ответ, 15 на 2 можно делить бесконечно.
Спустя 38 минут, 28 секунд (19.09.2012 - 17:47) inpost написал(а):
cyberside
.21н37182783781237182371317831 можно делить сколько влезет куда угодно
Ты тестировал на калькуляторе за 5 грн. и он не выдержал?!
.21н37182783781237182371317831 можно делить сколько влезет куда угодно
Ты тестировал на калькуляторе за 5 грн. и он не выдержал?!
Спустя 1 день, 3 часа, 28 минут, 59 секунд (20.09.2012 - 21:16) neadekvat написал(а):
Цитата (cyberside @ 19.09.2012 - 15:50) |
15 - 8 - 4 - 2 - 1 |
С хрена ли?
15, 7, 3, 1
Что-то я глючу. Должно быть 3, значит, просто log($n, 2)
sergeiss, интересно, кстати, не помню такого на матане.
Спустя 1 час, 23 минуты, 23 секунды (20.09.2012 - 22:39) sergeiss написал(а):
Цитата (neadekvat @ 20.09.2012 - 22:16) |
С хрена ли? 15, 7, 3, 1 |
Автор добавляет в список само число. Поэтому и +1 внутри формулы.
Хотя, конечно, не до конца понятно, что же хочет ТС :)
Цитата (neadekvat @ 20.09.2012 - 22:16) |
sergeiss, интересно, кстати, не помню такого на матане. |
Я тоже не помню... Но мне как-то надо было найти "порядок величины", наиболее коротким способом. Да так, чтобы красиво было :) Величины могли изменяться от единиц до миллионов. Вот и "нашел" такой способ (с основанием 10 логарифм).
И кстати. Более правильно, наверное, будет так:
$result=ceil( log( $n,2)+1 );
Спустя 2 минуты, 42 секунды (20.09.2012 - 22:42) neadekvat написал(а):
Цитата (sergeiss @ 20.09.2012 - 23:39) |
Хотя, конечно, не до конца понятно, что же хочет ТС |
Вот-вот. Это довольно странное деление.
Цитата (sergeiss @ 20.09.2012 - 23:39) |
Вот и "нашел" такой способ (с основанием 10 логарифм). |
Как обычно, все самое интересное - за рамками стандартной программы)
Спустя 3 минуты, 6 секунд (20.09.2012 - 22:45) sergeiss написал(а):
Цитата (neadekvat @ 20.09.2012 - 23:42) |
Как обычно, все самое интересное - за рамками стандартной программы |
Стандартная программа - она и есть стандартная. А дальше думать надо самому уже.
Спустя 9 минут, 2 секунды (20.09.2012 - 22:54) sergeiss написал(а):
Насчет "не было", "за рамками программы"... Давай думать, откуда получается формулка-то
Для начала. Что такое (в десятично системе исчисления) число такого-то порядка? Например, 2-го. Это число "больше" 10^1, но "меньше или равно" 10^2. Т.е. от 11 до 100. А как найти порядок величины? Правильно, взять от него логарифм. По основанию 10. Округлить вверх до целого и получить искомую величину. Верно? Верно.
Судя по описанию алгоритма, автору надо найти что-то подобное, но только в двоичной системе исчисления. Т.е. определить, находится ли число в диапазоне: 1-2, 3-4, 5-8, 9-16, 17-32, 33-64 и т.д. Нижняя граница диапазона (1+2^(n-1)), верхняя границы = (2^n). А дальше уже использование логарифма по основанию 2 уже само просится Ну и (+1), дабы удовлетворить условию задачи полностью.
Ну, и в конце надо округлить. Все-таки CEIL() (округление "вверх") тут более правильно будет.
Для начала. Что такое (в десятично системе исчисления) число такого-то порядка? Например, 2-го. Это число "больше" 10^1, но "меньше или равно" 10^2. Т.е. от 11 до 100. А как найти порядок величины? Правильно, взять от него логарифм. По основанию 10. Округлить вверх до целого и получить искомую величину. Верно? Верно.
Судя по описанию алгоритма, автору надо найти что-то подобное, но только в двоичной системе исчисления. Т.е. определить, находится ли число в диапазоне: 1-2, 3-4, 5-8, 9-16, 17-32, 33-64 и т.д. Нижняя граница диапазона (1+2^(n-1)), верхняя границы = (2^n). А дальше уже использование логарифма по основанию 2 уже само просится Ну и (+1), дабы удовлетворить условию задачи полностью.
Ну, и в конце надо округлить. Все-таки CEIL() (округление "вверх") тут более правильно будет.
Спустя 19 минут, 49 секунд (20.09.2012 - 23:14) neadekvat написал(а):
sergeiss, да шо тут думать, я знакомому математику сказал: "Оказывается...", а он мне ответил удивленным взглядом и "Ну естественно..".
Вот все, что ты дальше написал.. Во-первых, я бы не стал за автора додумывать, что ему нужно. Возможно, если формализовывать и вводить термины, то задача будет примерно похожа, но даже автор не скажет "Да-да, именно то", иначе бы он не задавал таких вопросов, как в первом посте.
Ты в свое время не на математика учился?) Очень смахивает на теоретические формулировки, которые я всегда пропускал мимо, считая бессмысленной схоластикой, да простят меня за тавталогию.
Вот все, что ты дальше написал.. Во-первых, я бы не стал за автора додумывать, что ему нужно. Возможно, если формализовывать и вводить термины, то задача будет примерно похожа, но даже автор не скажет "Да-да, именно то", иначе бы он не задавал таких вопросов, как в первом посте.
Ты в свое время не на математика учился?) Очень смахивает на теоретические формулировки, которые я всегда пропускал мимо, считая бессмысленной схоластикой, да простят меня за тавталогию.
Спустя 7 минут, 35 секунд (20.09.2012 - 23:21) sergeiss написал(а):
Цитата (neadekvat @ 21.09.2012 - 00:14) |
Ты в свое время не на математика учился?) Очень смахивает на теоретические формулировки, которые я всегда пропускал мимо, считая бессмысленной схоластикой, да простят меня за тавталогию. |
Вообще, я выпускник радиофака нижегородского университета... Кафедра математики, однако
Впрочем, тут и теории нету никакой.
Цитата (neadekvat @ 21.09.2012 - 00:14) |
иначе бы он не задавал таких вопросов, как в первом посте. |
А вот это вовсе не факт. То, что несложно для одного, может быть сложным для другого.
Спустя 13 минут, 46 секунд (20.09.2012 - 23:35) neadekvat написал(а):
Цитата (sergeiss @ 21.09.2012 - 00:21) |
Кафедра математики, однако |
Как и думал, однако
Цитата (sergeiss @ 21.09.2012 - 00:21) |
То, что несложно для одного, может быть сложным для другого. |
Возможно, просто я посчитал, что приведенная тобой формулировка никак не соответствует формату вопроса автора. Конечно, есть вероятность, что он в должной мере соотнес свое красноречие с нашим невежеством.. (с)
Спустя 8 часов, 29 минут, 39 секунд (21.09.2012 - 08:05) sergeiss написал(а):
Цитата (neadekvat @ 21.09.2012 - 00:35) |
Конечно, есть вероятность, что он в должной мере соотнес свое красноречие с нашим невежеством.. (с) |
Я по-другому на это смотрю. Человек может прекрасно понимать, что ему надо. Но при формулировании вопроса может не правильно оценить, как его слова воспримут другие люди. У меня тоже так бывает зачастую
Второй вариант - это когда человек "примерно" знает, что ему надо, но не может это точно сформулировать. Этот вариант на форуме встречается достаточно часто.
Спустя 1 минута, 8 секунд (21.09.2012 - 08:06) Michael написал(а):
print log(15, 2); выдаст 3.9068905956085, это как раз точно сколько 15 делится на 2. Но не 5.
2^4 уже будет 16 .
2^4 уже будет 16 .
Спустя 15 минут, 33 секунды (21.09.2012 - 08:21) sergeiss написал(а):
Michael - я ж формулу с "округлением вверх" писал, получаем как раз то, что надо!
Спустя 5 минут, 11 секунд (21.09.2012 - 08:26) Michael написал(а):
sergeiss, но то понятно что твоя формула работает, ты под результат 5 ее составил.
Просто сам результат 5 что то другое но не деление. Для меня например логичен результат - 3 - сколько раз 15 поделится на 2 чтобы быть недробным числом.
Просто сам результат 5 что то другое но не деление. Для меня например логичен результат - 3 - сколько раз 15 поделится на 2 чтобы быть недробным числом.
Спустя 36 минут, 2 секунды (21.09.2012 - 09:02) sergeiss написал(а):
Michael - я уже писал в теме, что, по сути дела, задача сводится к следующей (как я ее понял, повторю еще раз): надо определить, какого порядка данное число в двоичной системе исчисления, плюс - добавить 1 к полученному результату.
15 находится между 9 и 16, т.е. в диапазоне (2^3+1) - (2^4). Получаем логарифм, округляем "вверх" и получаем 4. Т.е. то, что число находится именно в этом диапазоне. И еще "плюс 1". Итого = 5. И это будет верно для любого числа от 9 до 16!
Если взять число от 17 до 32, то по моему алгоритму получим число 6. И это также соответствует поставленной задаче
Ну, и так далее. Причем, без циклов безо всяких.
15 находится между 9 и 16, т.е. в диапазоне (2^3+1) - (2^4). Получаем логарифм, округляем "вверх" и получаем 4. Т.е. то, что число находится именно в этом диапазоне. И еще "плюс 1". Итого = 5. И это будет верно для любого числа от 9 до 16!
Если взять число от 17 до 32, то по моему алгоритму получим число 6. И это также соответствует поставленной задаче
Ну, и так далее. Причем, без циклов безо всяких.