Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Опять факториал   Найти похожие ветки 

 
Chcnger   (2004-03-17 21:07) [0]

Как вычеслить: T=N!/(K!*(K-N)!)
Подскажите, а то просто вычисляя по очереди получаются слишком большие числа(для Паскаля)


 
Gero ©   (2004-03-17 21:18) [1]

T := 1;
for i := 1 to K do
 T := T * (N - i + 1) div i;


 
Chcnger   (2004-03-17 21:58) [2]

А можете привести объяснение? Почему так? За ранее спасибо!!!


 
Gero ©   (2004-03-17 22:51) [3]

Все очень хитро сокращается.
T * (N - i + 1) всегда будет нацело делится на i.
Точного объяснения я не дам, так как сам его не помню.
Возьмите листик и ручку и попробуйте вывести всё самостоятельно.


 
Defunct ©   (2004-03-18 01:16) [4]

Chcnger   (17.03.04 21:07)  
Представьте факториал чисел в виде ряда, и там действительно можно много чего сократить.

Но не исключаю ситуации, что у вас результат может быть число, которое состоит из более 10 тыс. десятичных цифр. В таком случае представьте ваши данные в виде массивов десятичных цифр.


 
Defunct ©   (2004-03-18 01:17) [5]

Умножение в столбик из школьного курса, надеюсь, еще не забыли


 
Nikolay M. ©   (2004-03-18 08:30) [6]


> T=N!/(K!*(K-N)!)

Кстати, если это число К выборок из N, то, наверное, не (K-N)!, а (N-K)!
?


 
KSergey ©   (2004-03-18 08:42) [7]

> Chcnger   (17.03.04 21:58) [2]
> А можете привести объяснение? Почему так? За ранее спасибо!!!

Если не лады с иксами и игреками - возьмите любые числа вместо N и K и происведите вычисления на бумажке. Только не тупо сначала числитель, потом - знаменатель считаем, а расписать как это все будет вычисляться - и увидите, что там почти все сокращается.


 
Sha ©   (2004-03-18 09:37) [8]

> Chcnger   (17.03.04 21:58) [2]
> А можете привести объяснение? Почему так? За ранее спасибо!!!

Потому, что на каждом шагу получается биномиальный коэффициент.

З.Ы. Еще одна подсказка. Иногда, чтобы избежать переполнения, выгоднее вычислять в обратную сторону - от больших значений i к меньшим. Угадай сам, когда.


 
Chcnger   (2004-03-19 13:56) [9]

>З.Ы. Еще одна подсказка. Иногда, чтобы избежать переполнения, >выгоднее вычислять в обратную сторону - от больших значений i >к меньшим. Угадай сам, когда.

Так когда же? Есть идея, но кажется не то :)


 
TUser ©   (2004-03-19 14:02) [10]

Такая формула вычисляется через Стирлинга (кажется его зовут так). Ищи формулу в учебниках по математике, что-то типа
n!=(n^n)*(e^n)*sqtr(2*pi*n). Для n>10-20 получается вполне точно.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
4-1075121397
Islander
2004-01-26 15:49
2004.04.04
Непонятки с VirtualFree


14-1078905227
SPeller
2004-03-10 10:53
2004.04.04
Теперь и я...


3-1078400481
Timego
2004-03-04 14:41
2004.04.04
Можно ли рисовать в titel DBGrid а?


1-1079279982
Dmk
2004-03-14 18:59
2004.04.04
Что быстрее?


1-1079253255
Новичек
2004-03-14 11:34
2004.04.04
Процедура обработки события.