http://blog.sina.com.cn/s/blog_83f774820102wgh8.html
int conutOne(int n) {
if (n <= 0) {
return 0;
}
if (n==1) {
return 1;
}
int base = 1;
int count = 0;
while (n/base) {
int high = n/(base*10);
int low = n - (n/base)*base;
int cur = (n/base)%10;
if (cur == 0) {
count += high*base;
}
else if (cur == 1) {
count += high*base +low +1;
}
else if (cur > 1){
count += (1+high)*base;
}
base =base *10;
}
return count;
}
int countOneRet = conutOne(10000);