Количество сочетаний (61)

| рубрика «Программы» | автор basvic
Метки: ,

Число сочетаний - часто используемая формула в комбинаторике. Это количество вариантов выбрать из множества объектов N наборы по K объектов.

 n      n!
C  = --------
 k   (n-k)!k!
 ```

Например вычислить количество вариантов Спортлото 5 из 36

C = 36!/((36-5)! \* 5!) = 376992

C = 250!/((250-110)!\*110!) = 1.5120188e73 (это долго считает)
0     1     2     3     4     5     6     7     8     9

00 П1 XY - FBx Kmax ИП1 XY - П0 1 10 П2 ИП2 ИП1 * ИП0 / П2 КИП1 FL0 11 20 ИП2 С/П БП 00 ```

Ввод: k В↑ n С/П. При индикации ошибки (ЕГГОГ) перед вводом новых данных нажать В/О

Регистры:

  • П0 - меньшее число из k и (n-k)
  • П1 - n - количество элементов множества
  • П2 - регистр накопитель результата

Программа записывает n в П1, вычисляет меньшее из k и (n-k) и записывает в П0, очищает регистр-накопитель П2, записав туда 1 (адр 00..10). Затем выполняется основной цикл вычислений (адр. 11..19) где содержимое накопителя поочерёдно умножается на число из числителя, делится на число из знаменателя, а затем декрементируются оба регистра источника данных П1 и П0. По окончании вывод результатов, останов и переход к началу программы.

Программа всегда выполняет минимальное количество итераций и потому способна считать значения не доступные инженерным калькуляторам со встроенной функцией. Например пример 2 CASIO fx-82MS взять не в состоянии.


blog comments powered by Disqus