Kaygb's wiki

蓝桥算法提高-计数问题

试题 算法提高 计数问题

资源限制

时间限制:1.0s 内存限制:128.0MB

问题描述

  试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。

输入格式

  输入文件名为 count.in。   输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。

输出格式

  输出文件名为 count.out。   输出共 1 行,包含一个整数,表示 x 出现的次数。

输入输出样例

count.in count.out
11 1 4

数据说明

  对于 100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。

分析

处理读入的数,当大于0 的时候对10取余,如果与x相等则sum加一,然后除十继续取余。

代码

#include <iostream>
using namespace std;

int main() {

    long n;
    int x;
    int sum = 0;
    cin >> n >> x;
    for (long i = 1; i <= n; ++i) {
        long m = i;
        while (m > 0){
            if(m % 10 == x){
                sum ++;
            }
            m = m/10;
        }
    }
    cout << sum;

    return 0;
}