как найти выбрать r без переполнения - PullRequest
2 голосов
/ 23 мая 2010

Мне нужно найти значение n, выберите r - количество способов выбора r объектов из n.

если я сначала найду числитель, то знаменатель. я получаю исключение.

Я использую Java.

как это сделать например на 44 выбери 42

1 Ответ

3 голосов
/ 23 мая 2010

Вы можете использовать тот факт, что NcR равно Nc(N-R). Формула:

 N * (N - 1) * ... * (N - R + 1)
---------------------------------
         1 * 2 * ... * R

Вы можете заметить, что произведение K последовательных чисел всегда делится на K. Итак, цикл будет выглядеть как

  • умножить два числа из номинатора
  • разделить на 2
  • умножить на 3-е число от номинатора
  • разделить на 3
  • ...
  • умножить на последний номер от номинатора
  • разделить на R

Либо просто используйте java.math.BigInteger.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...