OneCoder Avatar
OneCodercoderli.com · 937 篇博文
二级

C++ 算法考级专栏

真题分析、矩阵探测、递归回溯与基础语法

🎨 视觉封面

【GESP】C++二级练习 luogu-b2082, 数字统计

📅 2024-12-15·✍️ OneCoder·计算中...·⏱️ 3 分钟
#GESP#C++#多重循环

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

BASH
2 22

样例输出 #1

BASH
6

样例输入 #2

BASH
2 100

样例输出 #2

BASH
20

数据范围

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


题目分析

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

示例代码

CPP
#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;
}

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!