首页 > 其他 > 详细

Number of Digit One

时间:2015-07-15 20:51:36      阅读:112      评论:0      收藏:0      [点我收藏+]

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;
    }
};

//此题看了别人做的,思考良久才懂,要想想看如何总结规律

Number of Digit One

原文:http://www.cnblogs.com/jason1990/p/4649386.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!