UNPKG

mathball

Version:

A JavaScript library for Competitive Programming

36 lines (30 loc) 611 B
'use strict'; /* nCr * Function: nCr() */ var validate = require('../validation/non-negative-integer'); /** * * @param {number, number} number * @returns {number} */ function nCr(number1, number2) { var res = 1; var i = 0; if (number2 > number1 - number2) { number2 = number1 - number2; } for (; i < number2; ++i) { res *= number1 - i; res /= i + 1; } return res; } exports.nCr = function (number1, number2) { validate(number1, 'nCr'); validate(number2, 'nCr'); if (number1 < number2) { throw new TypeError('n >= r condition not satisfied.\n'); } return nCr(number1, number2); };