数字N(0-9)出现的个数

import java.util.Scanner;

class Solution {
    public int numberOf2sInRange(int n) {
        return solve(n, 2);
    }

    private int solve(int n, int t) {
        long base = 1;
        int ans = 0;
        while (n >= base) {
            ans += n / (base * 10) * base + Math.min(base, Math.max(0, n % (base * 10) - t * base + 1));
            base *= 10;
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().numberOf2sInRange(in.nextInt()));
        }
    }
}

posted @ 2022-02-14 15:42  Tianyiya  阅读(119)  评论(0)    收藏  举报