数数字
GESP二级练习,涉及多层条件和循环嵌套,难度★✮☆☆☆。
luogu-t259142-数数字
题目要求
题目描述
试计算在区间 到 的所有整数中,数字 ()共出现了多少次?例如,在 到 中,即在 中,数字 出现了 次。
输入格式
个整数 ,之间用一个空格隔开。
输出格式
个整数,表示 出现的次数。
样例输入 #1
11 1
样例输出 #1
4
数据范围
对于 的数据,,。
题目分析
在这道题中,我们需要统计数字 在区间 到 的所有整数中出现的次数。我们可以通过遍历从 到 的所有整数,并对每个整数进行分解,统计其中包含 的次数。
首先,我们需要读取输入的两个整数 和 。然后,我们使用一个循环遍历从 到 的所有整数。在每次循环中,我们对当前整数进行分解,统计其中包含 的次数。我们可以通过对整数进行模运算(%)和除法(/)来实现分解。
在分解过程中,如果当前整数的最后一位数字等于 ,我们就将计数器 自增 。最后,我们输出计数器 的值,即数字 在区间 到 的所有整数中出现的次数。
这道题的时间复杂度为 ,空间复杂度为 。
{% include custom/custom-post-content-inner.html %}
示例代码
#include <iostream>
using namespace std;
int main() {
int n, x, ans = 0; // 定义变量n、x和计数器ans
cin >> n >> x; // 读取输入的n和x
for (int i = 1; i <= n; i++) { // 外层循环,从1到n遍历所有整数
int tmp = i, num; // 定义临时变量tmp和num
while (tmp != 0) { // 内层循环,对当前整数进行分解
num = tmp % 10; // 获取当前整数的最后一位数字
if (num == x) // 如果最后一位数字等于x
ans++; // 计数器自增1
tmp = tmp / 10; // 移除当前整数的最后一位数字
}
}
cout << ans; // 输出计数器ans的值,即数字x出现的次数
return 0;
}
{% include custom/custom-post-content-footer.md %}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on