[NOIP 2010 普及组] 数字统计

[NOIP 2010 普及组] 数字统计

GESP二级,多层循环和分支练习,难度★✮☆☆☆。

luogu-P1179 [NOIP 2010 普及组] 数字统计

题目要求

题目描述

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

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

输入格式

22 个正整数 LLRR,之间用一个空格隔开。

输出格式

数字 22 出现的次数。

样例输入 #1

2 22

样例输出 #1

6

样例输入 #2

2 100

样例输出 #2

20

提示

1LR1000001 ≤ L ≤R≤ 100000

NOIP2010 普及组 第一题


题目分析

解题思路

  1. 读取输入的范围 [L,R][L, R]
  2. 初始化一个计数器,用于统计数字 22 出现的次数。
  3. 遍历从 LLRR 的所有整数。
  4. 对于每个整数,循环除以 1010,直到该整数为 00
  5. 在每次循环中,检查余数是否为 22,如果是,则计数器加 11
  6. 遍历完毕后,输出计数器的值,即数字 22 出现的次数。

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


示例代码

#include <iostream>
using namespace std;
int main() {
    int l, r; // 定义两个整型变量l和r,用于存储输入的范围
    cin >> l >> r; // 从标准输入流中读取l和r的值
    int ans = 0; // 定义一个整型变量ans,初始化为0,用于存储答案
    for (int i = l; i <= r; i++) { // 从l开始循环,直到i不大于r
        int j, re = i; // 定义一个整型变量j和re,re初始化为i
        while (re != 0) { // 当re不为0时循环
            j = re % 10; // 计算re除以10的余数,并赋值给j
            if (j == 2) { // 如果j等于2
                ans++; // 将ans加1
            }
            re /= 10; // 将re除以10
        }
    }
    cout << ans; // 输出ans的值
    return 0; // 返回0,表示程序正常结束
}

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

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

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

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

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