其他分享
首页 > 其他分享> > 整数中 1 出现的次数(从 1 到 n 整数中 1 出现的次数)

整数中 1 出现的次数(从 1 到 n 整数中 1 出现的次数)

作者:互联网


求出 1 ~ 13 的整数中 1 出现的次数,并算出 100 ~ 1300 的整数中 1 出现的次数?可以发现 1 ~ 13 中包含 1 的数字有 1、10、11、12、13,因此共出现 6 次。现需要把问题更加普遍化,可以很快的求出任意非负整数区间中 1 出现的次数(从 1 到 n 中 1 出现的次数)


解题思路

设定整数点(1、10、100、1000、10000)分别对应 n 的个位、十位、百位、千位、万位,我们要做的就是:考虑每一位出现 1 的情况,算出各自符合题意的数的数量,并进行相加,就能得出想要的结果。

现以整数点 100 为例,使用 100 对 n 进行分割,高位为 n/100,低位为 n%100

考虑三种情况:

综合以上三种情况,我们可以得出:

public class Solution {
    public int NumberOf1Between1AndN_Solution(int n) {
        int count = 0;
        long split = 1;
        for(int i = 1; i <= n; i *= 10) {
            int a = n/i, b = n%i;
            count = count + ((a+8)/10)*i + ((a%10 == 1) ? (b + 1) : 0);
        }
        return count;
    }
}

标签:10,int,56,整数,次数,百位,100,出现
来源: https://www.cnblogs.com/Yee-Q/p/13828625.html