2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Как быстрее сосчитать число двоек в разложении факториала?
Сообщение03.04.2011, 11:28 


01/10/10

2116
Израиль (племянница БизиБивера)
Обычно я пользуюсь следующим алгоритмом, до которого, кстати, сама докопалась.

Число n двоек в разложении числа $m!$ на простые множители равно $[\frac{m}{2}]+[\frac{m}{4}]+[\frac{m}{8}]+\dots +[\frac{m}{2^k}]+\dots$
Например, в числе $2011!$ будет

$[\frac{2011}{2}]+[\frac{2011}{4}]+[\frac{2011}{8}]+\dots +[\frac{2011}{2^k}]+\dots=2002$

двойки.

При этом n, как правило, не намного отличается от m.

А как сосчитать быстрее? Для $2011!$ данный алгоритм ещё более-менее приемлем, а как, скажем, быть с $(2011!)!$? Есть какая-то формула?

 Профиль  
                  
 
 
Сообщение03.04.2011, 11:34 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
В теории сложности алгоритмов, как проедешь первые определения, на обочине стоит серый могильный камень с надписью:
"Он пытался получить ответ быстрее, чем можно его записать".

 Профиль  
                  
 
 Re:
Сообщение03.04.2011, 11:38 


01/10/10

2116
Израиль (племянница БизиБивера)
ИСН в сообщении #430669 писал(а):
В теории сложности алгоритмов, как проедешь первые определения, на обочине стоит серый могильный камень с надписью:
"Он пытался получить ответ быстрее, чем можно его записать".

Если Вы о Колмогоровской сложности, то это не так. Скажем, бесконечную последовательность 1010101010... может породить программа, которую даже я смогу написать, хотя программировать не умею :D

 Профиль  
                  
 
 
Сообщение03.04.2011, 11:43 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Нет, это другое. Я о той сложности, которая фигурирует в "P=NP".

 Профиль  
                  
 
 Re:
Сообщение03.04.2011, 11:44 


01/10/10

2116
Израиль (племянница БизиБивера)
ИСН в сообщении #430675 писал(а):
Нет, это другое. Я о той сложности, которая фигурирует в "P=NP".

Дык, вроде ж до сих пор открытая проблема?

 Профиль  
                  
 
 
Сообщение03.04.2011, 11:45 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Проблему я упомянул только как указатель того, из какой это области.

 Профиль  
                  
 
 Re:
Сообщение03.04.2011, 11:50 


01/10/10

2116
Израиль (племянница БизиБивера)
ИСН в сообщении #430678 писал(а):
Проблему я упомянул только как указатель того, из какой это области.

Давайте сформулируем вопрос по-другому.
На олимпиаде меня спрашивают, сколько двоек в разложении $2011!$? Я тупо беру листочек и считаю. Теперь мне задают такой же вопрос об очень большом числе и я могу лишь ответить, что число двоек приблизительно равно самому числу. А как точно посчитать?

 Профиль  
                  
 
 
Сообщение03.04.2011, 12:00 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Ответ сам представляет собой очень большое число, которое даже записать быстро не получится (т.е. даже если уже его знаешь). Это возвращает нас к моему первому замечанию.

 Профиль  
                  
 
 
Сообщение03.04.2011, 12:30 
Заслуженный участник


25/02/11
1797
Для $m=2^k$ число двоек равно $n=2^k-1$. А в общем случае разность $m-n$ равна количеству единиц в двоичной записи числа $m$.

 Профиль  
                  
 
 
Сообщение03.04.2011, 12:42 
Заслуженный участник
Аватара пользователя


21/12/05
5931
Новосибирск
Xenia1996 в сообщении #430680 писал(а):
На олимпиаде меня спрашивают ...

Возможно они хотят услышать тождество $\lfloor\frac{a}{bc}\rfloor=\lfloor\frac{\lfloor\frac{a}{b}\rfloor}{c}\rfloor$?
C его помощью каждое слагаемое суммы получается делением предыдущего с округлением вниз.

 Профиль  
                  
 
 Re:
Сообщение03.04.2011, 12:45 


01/10/10

2116
Израиль (племянница БизиБивера)
Vince Diesel в сообщении #430702 писал(а):
Для $m=2^k$ число двоек равно $n=2^k-1$. А в общем случае разность $m-n$ равна количеству единиц в двоичной записи числа $m$.

Спасибо!

В принципе, то же самое, ибо количество единичных битов мы считаем по такому же алгоритму, каждый раз делим пополам и берём целую часть. Только там складывать не надо, просто писать единичку, если не делится пополам, и 0, если делится.

-- Вс апр 03, 2011 12:48:55 --

bot в сообщении #430708 писал(а):
Xenia1996 в сообщении #430680 писал(а):
На олимпиаде меня спрашивают ...

Возможно они хотят услышать тождество $\lfloor\frac{a}{bc}\rfloor=\lfloor\frac{\lfloor\frac{a}{b}\rfloor}{c}\rfloor$?
C его помощью каждое слагаемое суммы получается делением предыдущего с округлением вниз.

(Оффтоп)

В любом случае, правильный ответ они обязаны засчитать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group