mathball
Version:
A JavaScript library for Competitive Programming
36 lines (30 loc) • 611 B
JavaScript
;
/* 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);
};