Talk is cheap.
func numberOf1Between1AndN_Solution(n int) int {
var count, tmp int
for i := 1; i <= n; i *= 10 {
a, b := n / i, n % i
if a % 10 == 1 { tmp = 1 }
count += (a + 8) / 10 * i + tmp * (b + 1)
}
return count
}