数字统计

GESP二级练习,涉及多层条件和循环嵌套,类似题型重复练习,难度★✮☆☆☆。

luogu-b2082 数字统计

题目要求

题目描述

请统计某个给定范围 [L,R][L,R] 的所有整数中,数字 22 出现的次数。

比如给定范围 [2,22][2,22],数字 22 在数 22 中出现了 11 次,在数 1212 中出现 11 次,在数 2020 中出现 11 次,在数 2121 中出现 11 次,在数 2222 中出现 22 次,所以数字 22 在该范围内一共出现了 66 次。

输入格式

输入共 11 行,为两个正整数 LLRR,之间用一个空格隔开。

输出格式

输出共 11 行,表示数字 22 出现的次数。

样例输入 #1

2 22

样例输出 #1

6

样例输入 #2

2 100

样例输出 #2

20

数据范围

1<L,R<100001 \lt L,R \lt 10000


题目分析

这是一道简单的数学题,需要统计一个给定范围内所有整数中数字2出现的次数。我们可以使用一个循环来遍历这个范围,然后对每个数进行逐位判断。具体来说,我们可以通过取模运算(%)和整除运算(/)来逐位提取每个数的数字,并判断是否为2。如果是,就将答案加1。最后输出答案即可。

{% include custom/custom-post-content-inner.html %}

示例代码

#include <iostream>
using namespace std;
int main() {
    int a, b; // 定义两个整数a和b
    cin >> a >> b; // 从输入流中读取a和b的值
    int ans = 0; // 初始化答案为0
    for (int i = a; i <= b; i++) { // 从a到b遍历每个数
        int d = i, num; // 将当前数i赋值给d,并定义一个临时变量num
        while (d != 0) { // 当d不为0时循环
            num = d % 10; // 取d的最后一位数字
            if (num == 2) { // 如果最后一位数字是2
                ans++; // 答案加1
            }
            d /= 10; // 将d除以10,去掉最后一位数字
        }
    }
    cout << ans; // 输出答案
    return 0;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on