题1:计数问题
【题目描述】
试计算在区间 1 1 1 到 n n n 的所有整数中,数字 x ( 0 ≤ x ≤ 9 ) x(0≤x≤9) x(0≤x≤9)共出现了多少次?例如,在 1 1 1到 11 11 11中,即在 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 、 10 、 11 1、2、3、4、5、6、7、8、9、10、11 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 4 4 次。
【输入文件】
输入共 1 1 1 行,包含 2 2 2 个整数 n 、 x n、x n、x,之间用一个空格隔开。
【输出文件】
输出共 1 1 1 行,包含一个整数,表示 x x x 出现的次数。
【输入样例1】
11 1
【输出样例1】
4
【数据规模】
对于 100 % 100\% 100%的数据, 1 ≤ n ≤ 1 , 000 , 000 , 0 ≤ x ≤ 9 1≤n≤1,000,000,0≤x≤9 1≤n≤1,000,000,0≤x≤9。
【代码如下】:
#include <bits/stdc++.h>
using namespace std;
ifstream cin("count.in");
ofstream cout("count.out");
int a[1000];
void fenli(int x) { // 分离函数,将每位分离
int i = 1;
while (x != 0) {
a[i] = x % 10;
x /= 10;
i++;
}
a[0] = i - 1; // a[0]储存长度
}
int main() {
int n, i, s = 0, j, k;
cin >> n >> k;
for (i = 1; i <= n; i++) {
fenli(i);
for (j = 1; j <= a[0]; j++) {
if (a[j] == k) // 比较是否相等
s++;
}
}
cout << s;
return 0;
}