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:
1.Beware of overflow
C++:
class Solution { public: int countDigitOne(int n) { if(n<=0) return 0; //防止负数 int res=0; for(long m=1;m<=n;m*=10) { long a=n/m,b=n%m; res+=(a+8)/10*m+(a%10==1)*(b+1); } return res; } };
//此题看了别人做的,思考良久才懂,要想想看如何总结规律