Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.
For example:
Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.
Solution:
1 int countDigitOne(int n) 2 { 3 int times = 0; 4 for (long long int k = 1; k <= n; k *= 10) 5 { 6 long long int a = n / k, b = n % k; 7 times += (a + 8) / 10 * k; 8 if(a % 10 == 1) 9 times += (b + 1); 10 } 11 12 return times; 13 }
所有评论(0)