[NOIP 2013 普及组] 计数问题
2026-02-19 21:42:37
发布于:福建
8阅读
0回复
0点赞
题意
计算在 ~()中所有的整数中,数字 ()共出现了几次
分析
- 内层循环:可考虑对于一个整数tmp,我们可以获得他的每一位进行统计,方法就是只要对他除10取余数,就可以得到他的个位数字,判断是不是等于 ,如果就是 ,则计数器加 ;然后吧 tmp 自除 ,把原来的个位数去掉了;重复刚才的流程,每次都统计个位数,知道tmp 为 位置,这就是内层循环,可使用while解决。
- 外层循环:如果你上面的学
废会了就可以安如下操作:从 到 枚举 i,然后将i的值赋值给tmp后再统计tmp枚举每一位
注意:不能直接出来i,否则i会被改变,你就会TLE了
代码
#include <bits/stdc++.h>
using namespace std;
int n , x , ans = 0;
int main( ) {
cin >> n >> x;
for (int i = 1 ; i <= n ; i++) {
int tmp = i;
int num;
while(tmp != 0) {//内层循环
num = tmp % 10;
if (num == x) {
ans++;
}
tmp /= 10;
}
}
cout << ans << endl;
return 0;
}
前置知识
A92267.最大最小差:需要Oier学会找到最大与最小值,关键在于for循环的控制
A29974.【循环】【入门】一尺之棰:需要Oier学会while循环的控制
A388.整数各位之和:需要oier学会如何取位数
这里空空如也


有帮助,赞一个