let MOD = 1e9 + 7;
let dp =
new
Array(100001);
for
(let i=0; i<100001; i++)
dp[i]=
new
Array(2);
function
recur(i, j, N, a)
{
if
(i == a.length) {
return
1;
}
if
(dp[i][j] != -1)
return
dp[i][j];
let ans = 0;
if
(j == 1) {
for
(let k = 0; k <= (parseInt(a[i])); k++) {
if
(k == N)
continue
;
if
(k == (parseInt(a[i])))
ans = ans + recur(i + 1, 1, N, a);
else
ans = ans + recur(i + 1, 0, N, a);
}
}
else
{
for
(let k = 0; k <= 9; k++) {
if
(k == N)
continue
;
ans += recur(i + 1, 0, N, a);
}
}
return
dp[i][j] = ans;
}
function
countInRange(N, A, B)
{
for
(let i=0; i<100001; i++)
for
(let j=0; j<2; j++)
dp[i][j]=-1;
A--;
let L = A.toString(), R = B.toString();
let ans1 = recur(0, 1, N, L);
for
(let i=0; i<100001; i++)
for
(let j=0; j<2; j++)
dp[i][j]=-1;
let ans2 = recur(0, 1, N, R);
return
ans2 - ans1;
}
let N = 5, L = 1, R = 10;
document.write(countInRange(N, L, R));
document.write(
"<br>"
);
let N1 = 5, L1 = 1, R1 = 100;
document.write(countInRange(N1, L1, R1));