Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
1-1079104462
Ysp1
2004-03-12 18:14
2004.04.04
Есть Handle как узнать путь к ехе-шнику


7-1075032357
Freaky
2004-01-25 15:05
2004.04.04
Синхронизирование времени


3-1077690358
Jedu
2004-02-25 09:25
2004.04.04
Возникла проблема с IBClientDataSet.......


14-1078921925
}|{yk
2004-03-10 15:32
2004.04.04
Есть ли нормальные писалки Cd-RW и freeware?


14-1078671515
Delphi5.01
2004-03-07 17:58
2004.04.04
Adobe Premiere





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский