https://www.acwing.com/problem/content/description/3403/
思路
- 题目比较简单,直接暴力枚举每一位即可
- 只不过枚举每一位可以有两种方式
- 使用除法和模运算枚举
- 使用
to_string
函数转成字符串再枚举
C++代码
方式1
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n, k;
int res = 0;
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i ++) {
for (auto j : to_string(i))
if (j - '0' == k) res ++;
}
cout << res << endl;
return 0;
}
方式2
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n, k;
int res = 0;
int cal(int x) {
int cnt = 0;
while(x) {
if (x % 10 == k) {
cnt ++;
}
x /= 10;
}
return cnt;
}
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i ++) {
res += cal(i);
}
cout << res << endl;
return 0;
}