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.Hint:
-
- Beware of overflow.
1 int countDigitOne(int n) { 2 int count=0; 3 long m=1; 4 for(m=1;m<=n;m=m*10) 5 { 6 count+=(n/m+8)/10*m; 7 if(n/m%10==1) 8 count+=n%m+1; 9 }10 return count;11 }