|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.03.2008, 11:08 | #1 |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
Определить число Y знаков в факториале от X
Помогите разобраться как решить задачу:
Дано натуральное число X. Определить число Y знаков в факториале от X. Насколько я понял здесь нужно найти факториал числа, а затем посчитать сколько знаков в факториале от этого числа, т.е. например факториал числа 10=362880, значит количество знаков =6. Факториал, например, посчитали. А затем как? Число преобразовываем в строку и считаем количество символов в строке? Если да, то каким образом преобразовать число в строку? В книге нашел такую процедуру: Procedure Str (X [: Width [: Decimals]]; var S: String) - преобразует численное значение Х в его строковое представление S. Можно ли с помощью этой процедуры преобразовать число в строку? Если да, то что мы пишем в процедуре? str(X,S), где Х-число, а S-перемнная типа Sting? Мне просто непонятна запись [: Width [: Decimals]]. Помогите, кто может разобраться!!! |
23.03.2008, 11:43 | #2 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
[: Width [: Decimals]] - это формат преобразования для вещественного числа, количество символов до и после запятой. Для целых чисел он не нужен.
Например, если X=85.1252963, то после str(X:2:3,S); S=85.125. В вашем случае код следующий: Код:
|
23.03.2008, 14:46 | #3 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Собственно нам нужен не факториал числа а только количество знаков в десятичном представлении этого факториала. Т.е. нужно вычислить десятичный логарифм от N!
Можно использовать формулу Стирлинга для приближенного вычисления факториала. N! := sqrt(2 * PI * n) * (n/e)^n; Возьмем десятичный логарифм от правой части равенства. После несложных преобразований получаем: Код:
5! - (3) 8! - (5) == 40320 10! - (7) == 3628800 1000! - 2568 знаков 1000000! - 5565709 знаков |
23.03.2008, 16:04 | #4 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Красивое решение. Хорошо, когда кое-какие формулы знаешь.
|
24.03.2008, 11:06 | #5 |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
Решение красивое, только я уже не уверен правильное ли. Просто когда я набрал этот код и проверил, то при N!=1000000 количество знаков программа выдала не 5565709, а 64368. Вот и непонятно, правильно код работает или нет!!! Просьба проверить кто может и поправить что не так. Или автор кода сделал описку когда писал сообщение? .
|
24.03.2008, 11:33 | #6 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
=LN((2*3,14*1000000)*(2*3,14*100000 0)) / LN(1000000) + 1000000 - 1000000 / LN(1000000) = 927619 =LN(10) = 2,3 =LN(1000000) = 13,82 =2,3/13,82=0,17 =927619/0,17=5 млн с копейками Проверь еще раз описание типов. |
|
24.03.2008, 11:34 | #7 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Замени Z, n : integer; на longint;
|
24.03.2008, 13:40 | #8 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
Код:
c точки зрения разьяснений. Предположим нужно найти количество цифр целого Х он будет равно trunc(ln(X)/ln(10))+1. Следовательно мы находим А это ln(n!) где n! по формуле Стирлинга.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
24.03.2008, 17:10 | #9 | |
Пользователь
Регистрация: 02.03.2008
Сообщений: 20
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. | Briz | Помощь студентам | 2 | 11.05.2008 00:56 |
Ввести число N и определить делится ли оно без остатка на число M (VBA) | Ivanich | Microsoft Office Excel | 7 | 24.04.2008 19:43 |
Определить радиус и центр окружности на которой лежит наибольшее число точек. | Zoratul | Помощь студентам | 2 | 11.01.2008 16:00 |
Определить n-ое число Фибоначчи - Рекурсия | Xeon332 | Помощь студентам | 3 | 09.01.2008 19:01 |
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки | urgu_st | Помощь студентам | 13 | 23.10.2007 09:14 |