JSFiddle - React, Tailwind, and code Playground
HTML
M = <input type="number" id="id_m" value="6" min="1" max="30"><br />
N = <input type="number" id="id_n" value="5" min="1" max="90"><br />
<input type="button" value="Calc" id="id_c"><br />
<div id="id_r"></div>
CSS
* {
font-size: 26px;
}
input {
width: 80px;
}
JavaScript
var calculation = (function() {
function sumCount(f, m, n, saved) {
if (m < 2) {
return n < 10 && n >= f ? 1 : 0;
}
if (n < 1) {
return 1 - f;
}
if (saved[m][n] >= 0) {
return saved[m][n];
}
var c = 0, last = Math.min(n, 9);
for (var i = f; i <= last; ++i) {
c += sumCount(0, m - 1, n - i, saved);
}
return saved[m][n] = c;
}
function calc(M, N) {
var saved = [];
var digs = Math.ceil(M / 2);
for (var i = 0; i <= digs; ++i) {
saved[i] = new Array(N + 1);
for (var j = 0; j <= N; ++j) {
saved[i][j] = -1;
}
}
var count = sumCount(M % 2, digs, N, saved);
var suf = Array(Math.ceil(M / 2)).join('0');
var k = M % 2 ? 1 : 9;
return count ? (count * k) + suf : '0';
}
return calc;
})();
//---------------------------------------------------
document.getElementById("id_c").onclick = function() {
var M = parseInt(document.getElementById("id_m").value, 10);
var N = parseInt(document.getElementById("id_n").value, 10);
document.getElementById("id_r").innerHTML = calculation(M, N);
}