Count the digit one - formula

by Hari Menon

HTML

<div id="output"></div>

JavaScript

var countDigitOne = function(n) {
    var sum = 0;
    for (var m = 1; m <= n; m *= 10) {
        var r = Math.floor(n/m), k = n % m;
        sum += Math.floor((r + 8) / 10) * m + (r % 10 === 1 ? k + 1 : 0);
    }
    return sum;
};

console.log(countDigitOne(1009912129));