Vijos P1848 记数问题【进制】

描述

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

格式

输入格式

输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。

输出格式

输出共 1 行,包含一个整数,表示 x 出现的次数。

样例1

样例输入1

11 1

样例输出1

4

限制

每个测试点1s。

提示

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

来源

NOIP 2013 普及组



问题链接Vijos P1848 记数问题

问题分析

穷举法实现,没有什么技术含量。

一个数模除10的结果是该数的个位,一个数处以(整除)10的结果是该数10进制右移1位(去掉个位)。

程序说明

(略)


参考链接:(略)


AC的C++程序如下:

#include <iostream>

using namespace std;

int main()
{
    int n, x, ans, v;

    cin >> n >> x;

    ans = 0;
    for(int i=1; i<=n; i++) {
        v = i;
        while(v) {
            if(v % 10 == x)
                ans++;
            v /= 10;
        }
    }

    cout << ans << endl;

    return 0;
}






原文地址:https://www.cnblogs.com/tigerisland/p/7563873.html