原题:
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.
解决方法:
代码:
int countDigitOne(int n) {
int res = 0;
for(long long i = 1; i <=n; i*=10){
long long div = i * 10;
res += (n / div) * i + min(max(n % div - i + 1, 0LL), i);
}
return res;
}