648 字
3 分钟
GESP 2026年C++五级编程题解析
202603-1 有限不循环小数
题目描述
若 可化为一个有限的,不循环的小数,则称 为终止数。
请你求出在 到 中终止数的数量。
输入格式
输入一行,包含两个整数 。
输出格式
输出一行,包含一个整数,表示 到 中终止数的数量。
样例输入 1
2 11样例输出 1
5提示
【样例解释】
在 终止数有 、、、、。
【数据范围】
保证 。
代码解析
这道题代码很简单,考察的重点是数论,一个数字如果是终止数,那么它的质因子只能有 和 ,通过题目给出的 2、4、5、8、10 花点时间思考也可以找到这个规律,所有我们只需要判断每个数字是否只包含 和 这两个质因子即可。
#include <bits/stdc++.h>using namespace std;bool check(int a) { while (a % 2 == 0) a /= 2; while (a % 5 == 0) a /= 5; if (a == 1) return true; return false;}int main() {
int l, r, cnt = 0; cin >> l >> r; for (int i = l; i <= r; i++) if (check(i)) cnt++; cout << cnt;
return 0;}202603-2 找数
题目描述
给定一个包含 个互不相同的正整数的数组 与一个包含 个互不相同的正整数的数组 ,请你帮忙计算有多少个数在数组 与数组 中均出现。
输入格式
第一行包含两个整数 。
第二行包含 个正整数 表示数组 。
第三行包含 个正整数 表示数组 。
输出格式
输出一个整数,表示在数组 与数组 中均出现的数的个数。
样例输入 1
3 54 2 33 1 5 4 6样例输出 1
2提示
【样例解释】
样例 1 中,、 在数组 与 中均出现。
【数据范围】
对于 的数据,保证 。
对于 的数据,保证 ,。
代码解析
这道题代码也很简单,我们先将数组 排序,然后对于数组 中的每个数 ,我们使用二分查找在数组 中查找是否存在 ,如果存在,那么 就是在数组 与数组 中均出现的数。
#include <bits/stdc++.h>using namespace std;int main() {
int n, m, a[100005], cnt = 0; cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; sort(a, a+n); int b; for (int j = 0; j < m; j++){ cin >> b; if (a[lower_bound(a, a+n, b)-a] == b) cnt++; } cout << cnt;
return 0;} GESP 2026年C++五级编程题解析
https://yezi.press/posts/gesp/gesp-cpp5-2026/
陕公网安备61010302001363号