给定两个正整数 n 和 k,求从 1 到 n 这 n 个正整数的十进制表示中 k 出现的次数。
输入格式
共一行,包含两个整数 n 和 k。
输出格式
输出一个整数,表示答案。
数据范围
1≤n≤106,
1≤k≤9
输入样例:
12 1
输出样例:
5
样例解释
从 1 到 12 这些整数中包含 1 的数字有 1,10,11,12,一共出现了 5 次 1。
时/空限制: 1s / 64MB
题目解析:
对于每一个数,枚举它的每一位,看一下所有的位含有多少个k,根据数据的范围,计算量大约五六百万,根据C++ 的计算能力,用暴力枚举就可以算完。
代码:
#include<iostream>
using namespace std;
int main(){
int k, n, cnt = 0;
cin >> n >> k;
for(int i = 1; i <= n; i++){
int t = i;
while(t != 0){
if(t%10 == k) cnt++;
t /= 10;
}
}
cout << cnt;
return 0;
}