C – простое выражение для подсчета комбинаций в диапазоне чисел?

Ну, действительно, смутное заявление (для меня)

Каково основное выражение для вычисления:

  • «Количество комбинаций n вещей, взятых k за один раз как целое число»

Edit: немного больше пояснений: «Например, комбинации из четырех элементов a, b, c, d, взятых по три за один раз, – abc, abd, acd и bcd. Другими словами, существует в общей сложности четыре разные комбинации из четырех вещей, взятых по три за раз ».

Я беру не вводный class C, пытаясь выполнить мои требования к математике для передачи степени CS. До сих пор я получаю очень высокие оценки по всей своей работе, но когда появляется математика высшего уровня, я действительно застрял. Но я отвлекаюсь ..

Диапазон чисел будет 1-10 для n, а диапазон k будет 1-4.

Ниже приведена единственная ссылка, которую я получил, и это путь над моей головой.

http://www.themathpage.com/aPreCalc/permutations-combinations-2.htm

Основным выражением является n! / (K! (Nk)!). Эффективным способом расчета этого является использование таблицы 2D DP треугольника паскаля.

Ключевое выражение на странице:

  • n C k = n! ÷ ((n – k)! K!)

Это простое выражение для «количества комбинаций n вещей, взятых k за раз». Термин n C k – это способ, которым математики пишут «количество комбинаций n вещей, взятых k за раз». Выражение справа представляет собой краткий, точный и простой способ вычисления правильного значения. Это предполагает, что вы знаете, что n! является факториальным n и что «factorial n » означает каждое число между 1 и n, умноженное вместе.

Имейте в виду, что n! становится очень большой очень быстро, поэтому наивные алгоритмы будут работать примерно до n = 12, но выходят далеко за frameworks этого, и вы должны быть очень осторожны.

  • 0! = 1
  • 1! = 1
  • 2! = 2
  • 3! = 6
  • 4! = 24
  • 5! = 120
  • 6! = 720
  • 7! = 5040
  • 8! = 40320
  • 9! = 362880
  • 10! = 3628800
  • 11! = 39916800
  • 12! = 479001600
  • 13! = 6227020800

Обратите внимание, что 13! слишком велика, чтобы вписаться в 32-разрядное целое без знака и 21! слишком велика, чтобы вписаться в 64-битное целое без знака и 35! слишком велика, чтобы вписаться в 128-битное целое без знака (если вы можете найти компьютер с таким типом).

Если вы все еще не справитесь, вы столкнетесь с проблемами при передаче; это не очень сложная математика.