Number of Digit One

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)