文章

【GESP】C++一级真题练习(202309)luogu-B3864,小明的幸运数

GESP一级真题练习。为2023年9月一级认证真题。应该是两道题中略难的一道。

luogu-B3864

题目要求

描述

所有个位数为 k 的正整数,以及所有 k 的倍数,都被小明称为“ k 幸运数”。小明想知道正整数 L 和 R 之间(包括 L 和 R)所有 k 幸运数的和,你能帮帮他吗?

输入

输入 3 行。第一行包含一个正整数 k,第二行包含一个正整数 L,第三行包含一个正整数 R。约定 2≤k≤9,1≤L≤R≤1000。

输出

输出 1 行,符合题意的幸运数之和。

输入样例-1

7
1
10

输出样例-1

7

输入样例-2

7
10
20

输出样例-2

3


题目分析

遍历判定法:

  1. 遍历区间 ([L, R]):对区间内的每个数字 (n),依次判断是否为“k 幸运数”。
  2. 判断条件
    • 如果 (n % 10 == k),说明 (n) 的个位数为 (k)。
    • 如果 (n % k == 0),说明 (n) 是 (k) 的倍数。
  3. 使用一个变量 total_sum 累加符合条件的数的和。
  4. 输出最终的和。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main() {
    int lucky, first, end;
    cin >> lucky >> first >> end;
    int sum = 0;
    for (int i = first; i <= end; i++) {
        if (i % 10 == lucky || i % lucky == 0) {
            sum += i;
        }
    }
    cout << sum;
    return 0;
}

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

题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

本文由作者按照 CC BY 4.0 进行授权