资源限制
时间限制: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。
解题思路:
该题要求用文件输入,文件输出,为了方便就没有做了,因为提交的结果直接输入输出也是满足条件的,这道题麻烦在于如何统计个数,我的方法是创建一个数组,有容量为10,分别表示0——9这十个数的数量,把输入的数字转换成字符串,一位一位地比较,如果有目的的数字,则加一,这里的加一用ASCII码实现,方便快捷,当然还要注意超时问题,为了解决这个问题,我写了一个函数,这样输入一个数字就判断一下的方式不会超时。代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[10];
void getNum(int number){
string s;
stringstream stream;
string temp;
stream << number;
stream >> temp;
s.append(temp);
char * c = (char*)s.c_str();
for (int j = 0; j < strlen(c); j ++){
a[c[j] - '0'] ++;
}
}
int main() {
int num, n;
cin >> num >> n;
for (int i = 1; i <= num; i ++){
getNum(i);
}
cout << a[n];
return 0;
}