题目描述
小杨认为自己的幸运数是正整数 k(注:保证 1≤k≤9)。小杨想知道,对于从 1 到 n 的所有正整数中, k 出现了多少次。
输入格式
第一行包含一个正整数 n。
第二行包含一个正整数 k。
输出格式
输出从 1 到 n 的所有正整数中, k 出现的次数。
输入输出样例

说明/提示
从 1 到 25 中,2 出现的正整数有 2,12,20,21,22,23,24,25 ,一共出现了 9 次。
对于全部数据,保证有 1≤n≤1000,1≤k≤9。
解题思路
- 读取输入的整数 𝑛 和 𝑘。n表示数字范围的上限,k表示要统计的数字
- 初始化一个计数器,用于统计数字 𝑘 出现的次数。
- 外层循环遍历从 1 到 𝑛 的所有整数。
- 内层循环分解每个数字的各位数字,统计k出现的次数
- 在每次内循环中,通过余数(%10)取到当前最低位数字,并判断其是否为 𝑘,如果是,则计数器加 1。
- 使用t=t/10去掉已经处理的最低位,直到该整数为 0内循环结束。
- 外循环遍历完毕后,输出计数器的值,即数字 𝑘 出现的次数
代码实现
#include <iostream>
using namespace std;
int main(){
int n,k,cnt=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
int t=i;//注意此处一定要有一个中间值t,不能直接对i进行操作,不然会影响外循环的执行
while(t){
if(t%10==k) cnt++;
t=t/10;
}
}
cout<<cnt;
return 0;
}
1286

被折叠的 条评论
为什么被折叠?



