Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 17:52   #1
Besidnuk
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 17
По умолчанию Количество цифр в n!

Нужно подсчитать сколько цифр есть в n!. (1 ≤ N ≤ 10 000 000). Например n = 8, тогда цифр будет 5 (40320). Конечно понятно что этот факториал не надо считать если есть такие большие ограничения. Кто может подсказать как это можно делать. Пробовал вывести некую формулу, но никаких закономерностей не увидел.

Последний раз редактировалось Besidnuk; 12.04.2011 в 18:17.
Besidnuk вне форума Ответить с цитированием
Старый 12.04.2011, 19:42   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Насколько помню один из способов сделать это - с помощью http://ru.wikipedia.org/wiki/Формула_Стирлинга
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.04.2011 в 19:51.
Alex11223 вне форума Ответить с цитированием
Старый 12.04.2011, 19:48   #3
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Формула Стирлинга хороша конечно, но только при условии, что будет проведена аппроксимация такая что О-символика(остаточный член) будет пренебрежимо мала...
Да и зачем формула стирлинга когда можно:
Код:
Readln(n);
for i:=1 to n do
fac:=fac*i;
str:=floattostr(fac);
Writeln(length(str));
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 12.04.2011, 19:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от MyLastHit
Код:
for i:=1 to n do
fac:=fac*i;
MyLastHit, это неудачная шутка?!
Я уже не говорю про N = 10 000 000 (десяти миллионам)

попробуйте своим кодом найти хотя бы факториал N! при N=200
сколько циферок у Вас получилось?! ))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.04.2011, 19:58   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Нужно подсчитать сколько цифр есть в n!. (1 ≤ N ≤ 10 000 000).
Цитата:
Я уже не говорю про N = 10 000 000 (десяти миллионам)
Для меня n и N это немного разные вещи))) Подумал что в итоге значение факториала должно держаться в промежутке [1,10 000 000].

Serge_Bliznykov, хочу услышать ваш вариант - "малой кровью"))) Неужта формула стирлинга, где возводить n^n будет выполняться быстрее) И кстати без апроксимации можно маленько промазать, а так же получить иррациональное число).
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 12.04.2011 в 20:01.
MyLastHit вне форума Ответить с цитированием
Старый 12.04.2011, 20:00   #6
Besidnuk
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 17
По умолчанию

Спасибо за внимание. Забыл добавить что в задаче стоит ограничение времени (1 сек) и памяти (64 МБ).
Besidnuk вне форума Ответить с цитированием
Старый 12.04.2011, 20:03   #7
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Забыл добавить что в задаче стоит ограничение времени (1 сек) и памяти (64 МБ)
.
Щито? О_о
У вас дома мейнфрейм? Или суперкомпьютер?
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 12.04.2011, 20:08   #8
Besidnuk
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от MyLastHit Посмотреть сообщение
.
Щито? О_о
У вас дома мейнфрейм? Или суперкомпьютер?
Поэтому я и обращаюсь к вам, так как думаю что существует какой-то оптимальный алгоритм или формула. Задача взята из АСМ, и за последние сутки ее уже сделали 16 людей, а значит все-таки существуют.
Besidnuk вне форума Ответить с цитированием
Старый 12.04.2011, 20:17   #9
Nursik77
Пользователь
 
Аватар для Nursik77
 
Регистрация: 05.04.2011
Сообщений: 20
По умолчанию

Вопрос не в тему, а можно поинтересоваться характеристиками твоего "компа"
Nursik77 вне форума Ответить с цитированием
Старый 12.04.2011, 20:21   #10
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Задача взята из АСМ, и за последние сутки ее уже сделали 16 людей, а значит все-таки существуют.
http://forum.sources.ru/index.php?showtopic=9979
Вот тут нашли консенсус.
Код:
Const N = 1000000;
 
Function Lg(X : Extended) : Extended;
Begin
 Lg:=Ln(X) / Ln(10);
End;
 
Var I : Longint;
    Sum : Extended;
 
Begin
 Sum:=0.0;
 For I:=1 To N Do Sum:=Sum + Lg(I);
 Writeln(N, '! = ', Exp(Frac(Sum) * Ln(10)):10:10, '... * 10^', Trunc(Sum));
End.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество цифр в числе. Тошка Помощь студентам 2 13.03.2011 12:42
Количество цифр в числе. Renge Помощь студентам 5 14.01.2011 13:09
Количество цифр в числе Zelenyi Общие вопросы C/C++ 8 18.06.2010 03:24
количество цифр и количество символов до первой гласной буквы 111111 Общие вопросы C/C++ 2 22.12.2008 12:15