648 字
3 分钟
GESP 2026年C++五级编程题解析

202603-1 有限不循环小数#

题目描述

1a\frac{1}{a} 可化为一个有限的,不循环的小数,则称 aa终止数

请你求出在 LLRR 中终止数的数量。

输入格式

输入一行,包含两个整数 L,RL,R

输出格式

输出一行,包含一个整数,表示 LLRR 中终止数的数量。

样例输入 1

2 11

样例输出 1

5

提示

【样例解释】

[2,11][2,11] 终止数有 224455881010

【数据范围】

保证 1LR1061 \le L \le R \le 10^6

代码解析

这道题代码很简单,考察的重点是数论,一个数字如果是终止数,那么它的质因子只能有 2255,通过题目给出的 2、4、5、8、10 花点时间思考也可以找到这个规律,所有我们只需要判断每个数字是否只包含 2255 这两个质因子即可。

#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 找数#

题目描述

给定一个包含 nn 个互不相同的正整数的数组 AA 与一个包含 mm 个互不相同的正整数的数组 BB,请你帮忙计算有多少个数在数组 AA 与数组 BB 中均出现。

输入格式

第一行包含两个整数 n,mn,m

第二行包含 nn 个正整数 a1,a2,,ana_1,a_2,\cdots,a_n 表示数组 AA

第三行包含 mm 个正整数 b1,b2,,bmb_1,b_2,\cdots,b_m 表示数组 BB

输出格式

输出一个整数,表示在数组 AA 与数组 BB 中均出现的数的个数。

样例输入 1

3 5
4 2 3
3 1 5 4 6

样例输出 1

2

提示

【样例解释】

样例 1 中,4433 在数组 AABB 中均出现。

【数据范围】

对于 40%40\% 的数据,保证 1n,m10001 \leq n,m \leq 1000

对于 100%100\% 的数据,保证 1n,m1051 \leq n,m \leq 10^51ai,bi1091 \leq a_i,b_i \leq 10^9

代码解析

这道题代码也很简单,我们先将数组 AA 排序,然后对于数组 BB 中的每个数 bb,我们使用二分查找在数组 AA 中查找是否存在 bb,如果存在,那么 bb 就是在数组 AA 与数组 BB 中均出现的数。

#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/
作者
Yezi 叶子
发布于
2026/03/14
许可协议
CC BY-NC-SA 4.0