JSFiddle - React, Tailwind, and code Playground
JavaScript
const output = text => document.body.innerHTML += text;
/**
* @param {Array<number>} big
* @param {number} int
* @param {number} digits
* @returns {Array<number>}
*/
const mult = (big, int, digits = 1) => {
let res = [], carry = 0, div = 10 ** digits;
for (let i = big.length - 1; i >= 0 || carry; i -= 1) {
let prod = (i < 0 ? 0 : big[i] * int) + carry;
res.push(prod % div);
carry = prod / div | 0;
}
return res.reverse();
}
const factor = (n, digits = 1) =>
[...Array(n)].reduce((p, _, i) => mult(p, i + 1, digits), [1])
.map(String)
.map(el => '0'.repeat(digits - el.length) + el)
.join('')
.replace(/^0+/, '');
let t0 = performance.now();
let result = factor(2019, 6).match(/19/g).length;
output(result + ' in ' + (performance.now() - t0) + 'ms');