news 2026/5/2 11:05:26

【GESP 一级】洛谷 B3864 小明的幸运数 题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【GESP 一级】洛谷 B3864 小明的幸运数 题解

一、题目概述

本题是GESP 2023 年 9 月一级认证真题,对应洛谷题号 B3864,是入门阶段的经典条件筛选与累加求和题,核心是根据双重条件筛选数字并计算总和。

题目可以简化为:输入三个整数kLR,求区间[L, R]内,所有满足以下条件之一的数字之和:

  1. 数字的个位数是 k
  2. 数字是k 的倍数

注意:如果一个数同时满足两个条件(比如7,既是 7 的倍数,个位也是 7),只计算一次,不重复累加。


二、核心考察点

这道题覆盖了 GESP 一级的多个高频考点,同时锻炼了逻辑判断和去重思维:

考点考察内容难度
循环结构使用for循环遍历区间[L, R]内的所有数字⭐⭐
条件判断双重条件筛选(个位数判断 + 倍数判断)⭐⭐⭐
取模运算%10获取个位数、%k判断倍数⭐⭐
变量累加使用变量记录符合条件数字的总和⭐⭐
逻辑去重避免同时满足两个条件的数字被重复计算⭐⭐⭐

三、解题思路分析

1. 核心逻辑拆解

要解决这道题,我们需要:

  1. 遍历区间[L, R]内的每一个数字i
  2. 判断i是否满足 “个位数为 k”“是 k 的倍数”;
  3. 如果满足条件,就把i累加到总和变量中;
  4. 遍历结束后,输出总和。

关键细节:用if (条件1 || 条件2)可以天然实现去重,因为||逻辑或只会让条件成立的数字被加一次,不会重复计算。

2. 两个关键条件的实现

  • 个位数是 k:数字的个位数可以用i % 10获取,判断条件为i % 10 == k
  • 是 k 的倍数:判断条件为i % k == 0

3. 整体解题流程

  1. 读取输入的三个整数kLR
  2. 初始化总和变量sum = 0
  3. for循环从L遍历到R
    • 对每个数字i,判断是否满足i % 10 == k || i % k == 0
    • 如果满足,sum += i
  4. 循环结束后,输出sum

四、易错点提醒(考试避坑)

  1. 区间边界错误循环必须从L开始,到R结束(for (int i = L; i <= R; i++)),题目要求包括LR

  2. 重复计算问题不能用两个独立的if语句分别判断条件(比如先判断个位数,再判断倍数,都累加),否则会导致同时满足两个条件的数字被加两次,结果偏大。

  3. 个位数判断错误个位数是用i % 10,不是i / 10,后者得到的是十位数及以上的部分。

  4. 倍数判断的顺序倍数判断是i % k == 0,不是k % i == 0,后者逻辑完全颠倒。

  5. 边界值测试

    • 数字同时满足两个条件:如样例 1 中的7,只计算一次;
    • 区间内没有符合条件的数字:如k=7, L=8, R=13,结果为 0;
    • 区间只有一个数字:如L=R=7,结果为 7。

五、完整 C++ 代码

#include <iostream> using namespace std; int main() { int k, L, R; cin >> k; cin >> L; cin >> R; int sum = 0; // 初始化总和为0 // 遍历区间[L, R]内的所有数字 for (int i = L; i <= R; ++i) { // 判断是否满足条件之一:个位是k 或 是k的倍数 if (i % 10 == k || i % k == 0) { sum += i; // 符合条件,累加到总和 } } cout << sum << endl; return 0; }

六、扩展练习(举一反三)

学会这道题的核心逻辑后,可以试试以下扩展练习,巩固类似的条件筛选与累加能力:

练习 1:修改条件 —— 双条件同时满足

题目变形:求区间[L, R]内,同时满足“个位数是 k” 和 “是 k 的倍数” 的数字之和。

  • 提示:把||改成&&即可。

练习 2:扩展位数 —— 十位数也是 k

题目变形:求区间[L, R]内,个位数是 k十位数是 k是 k 的倍数的数字之和。

  • 提示:十位数可以用i / 10 % 10获取,新增条件(i / 10) % 10 == k

练习 3:反向筛选 —— 排除特定数字

题目变形:求区间[L, R]内,不满足“个位数是 k” 也不是“k 的倍数” 的数字之和。

  • 提示:把条件改成!(i % 10 == k || i % k == 0),或者用&&连接两个否定条件。

练习 4:多条件计数 —— 统计幸运数个数

题目变形:不计算和,改为统计区间[L, R]内,符合条件的 “幸运数” 有多少个。

  • 提示:把累加sum += i改成计数变量cnt++,最后输出cnt

练习 5:自定义规则 ——“k 的幸运数字” 升级

题目变形:自定义 “幸运数字” 规则,比如:

  • 规则 A:数字包含数字 k(如 k=7,数字 17、71、70 都算);
  • 规则 B:数字是 k 的倍数,或者各位数字之和是 k;求区间[L, R]内符合规则的数字之和。

七、总结

这道题的核心是循环遍历 + 多条件筛选 + 累加求和,是 GESP 一级中非常经典的综合应用题。

通过这道题,你不仅掌握了取模运算、循环遍历和条件判断,还理解了逻辑或(||)的去重特性,这对后续学习更复杂的筛选问题非常有帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 11:03:47

如何解密微信聊天记录:WechatDecrypt完整实战指南

如何解密微信聊天记录&#xff1a;WechatDecrypt完整实战指南 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为误删了重要的微信聊天记录而感到焦虑&#xff1f;或者想要将聊天记录从旧手机…

作者头像 李华
网站建设 2026/5/2 11:01:51

3步改造你的VLC播放器:告别单调,拥抱个性视觉体验

3步改造你的VLC播放器&#xff1a;告别单调&#xff0c;拥抱个性视觉体验 【免费下载链接】VeLoCity-Skin-for-VLC Castom skin for VLC Player 项目地址: https://gitcode.com/gh_mirrors/ve/VeLoCity-Skin-for-VLC 还在忍受VLC播放器那个一成不变的默认界面吗&#xf…

作者头像 李华
网站建设 2026/5/2 10:59:24

YOLOv5灰度图训练实战:从踩坑到部署,推理速度提升40%的完整配置流程

YOLOv5灰度图训练实战&#xff1a;从踩坑到部署&#xff0c;推理速度提升40%的完整配置流程 在工业视觉和安防监控领域&#xff0c;实时目标检测系统往往需要处理多路视频流&#xff0c;这对算力资源提出了严峻挑战。传统RGB三通道模型虽然能提供丰富的色彩信息&#xff0c;但在…

作者头像 李华