题目:求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?
为此他特别数了一下1 ~ 13中包含1的数字有1、10、11、12、13因此共出现6次,
但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,
可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)

解题思路:这道题如果是把从1到n所有的数字按取余数的方法去计算1的个数,那么时间复杂度太过于庞大,因为我们不知道输入的数字有多大,就得去寻找数字的规律!

    int NumberOf1Between1AndN_Solution(int n){
        int count = 0;
        long long pos = 1;
        for(;pos <= n;pos*=10){
            // 将 n 分为两部分,big为大部分,small 小的部分
            int big = n / pos;
            int small = n % pos;
            //当前位置为1的时候
            if(big % 10 == 1){
                count += small + 1;
            }
            count +=(big+8)/10*pos;
        }
        return count;
    }