文章

【GESP】C++二级练习 luogu-B3699 [语言月赛202301] 就要 62

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

luogu-B3699 [语言月赛202301] 就要 62

题目要求

题目描述

给你一个整数 $x$,你需要判断,这个整数中是否出现过数字 $62$ 或者能够被 $62$ 整除。如果是,输出 Yes,否则输出 No 即可。

输入格式

输入共一行,为一个整数 $x$。

输出格式

输出共一行。

如果 $x$ 中出现过数字 $62$ 或者能够被 $62$ 整除,输出一行 Yes,否则输出一行 No

输入 #1

1
11624

输出 #1

1
Yes

输入 #2

1
12214

输出 #2

1
Yes

输入 #3

1
16124

输出 #3

1
No

输入 #4

1
62

输出 #4

1
Yes

说明/提示

样例 1 解释

显然,$11624$ 中出现了 $62$。

样例 2 解释

容易知道,$12214 = 62 \times 197$,所以 $12214$ 可以被 $62$ 整除。

样例 3 解释

虽然 $16124$ 中出现了 $6$ 和 $2$,但是没有出现一个完整的 $62$。这种情况不被叫做【出现 $62$】。

样例 4 解释

显然,$62$ 中出现了 $62$,也是 $62$ 的倍数。

数据规模与约定

对于 $20\%$ 的测试数据,保证 $x \leq 10$;
对于 $40\%$ 的测试数据,保证 $x < 100$;
对于 $100\%$ 的测试数据,保证 $1 \leq x \leq 10 ^ {18}$。


题目分析

解题思路

  1. 首先,我们需要理解题目的核心要求:
    • 给定一个数字x
    • 判断这个数字是否满足以下两个条件之一:
      • 数字中出现连续的”62”
      • 数字能被62整除
  2. 解题思路:
    • 对于第一个条件,我们需要检查数字中是否存在连续的”62”:
      • 从右向左逐位检查数字
      • 每次取相邻两位,判断是否为”62”
      • 为了不遗漏可能性,需要检查数字的所有子串
    • 对于第二个条件,直接判断是否能被62整除
    • 两个条件满足任意一个即可输出”Yes”
  3. 具体实现:
    • 读入一个数字x
    • 从x开始,每次去掉最后一位数字,直到0为止
    • 对每个数字,从右向左检查是否出现”62”
    • 同时检查是否能被62整除
    • 如果找到符合条件的情况,输出”Yes”并结束
    • 如果所有情况都不符合,输出”No”


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
int main() {
    // 声明变量x用于存储输入的数字
    long long x;
    cin >> x;
    // 从x开始,每次去掉最后一位数字,直到0为止
    for (long long i = x; i != 0;) {
        // j用于存储当前要检查的数字
        long long j = i;
        // 从右向左检查每一位数字
        while (j != 0) {
            // 判断是否出现连续的"62"或者能被62整除
            if ((j % 10 == 2 && (j / 10) % 10 == 6) || j % 62 == 0) {
                cout << "Yes";
                return 0;
            }
            // 去掉最后一位数字
            j /= 10;
        }
        // 去掉原数字的最后一位
        i /= 10;
    }
    // 如果没有找到符合条件的情况,输出No
    cout << "No";
    return 0;
}

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

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

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

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

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