/**
* 统计0-n数字中出现k的次数,其中k范围为0-9
*/
public static int countOne(int k, int n) {
if (k > n) {
return 0;
}
int sum = 0;
int right = 0;
for (int i = 0; n > 0; i++) {
int last = n % 10;
sum += last * i * (int) Math.pow(10, i - 1);
if (k == 0) {
sum -= (int) Math.pow(10, i);
}
if (last > k) {
sum += (int) Math.pow(10, i);
}
if (last == k) {
sum += right + 1;
}
right += last * Math.pow(10, i);
n /= 10;
}
return sum + (0 == k ? 1 : 0);
}