码迷,mamicode.com
首页 > 其他好文 > 详细

Number of Digit One

时间:2015-07-15 20:52:00      阅读:115      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!