GESP_2026年06月_C++八级试卷
从PDF导入:GESP_2026年06月_C++八级试卷
C++
180分钟
总分 100.0
27 题
试卷题目预览
第1题
中级
2.0分
单选
从 7 本不同的算法书和 5 本不同的数学书中选出 4 本,要求两类书都至少选 1 本,共有( )种不同选法。
第2题
中级
2.0分
单选
6 个人排成一排照相,其中甲、乙两人不能相邻,共有( )种不同排法。
第3题
中级
2.0分
单选
展开式 (2x+1)^6 中,常数项的系数为( )。
第4题
中级
2.0分
单选
下面代码用于预处理组合数,横线处应填入的是( )。
#include
using namespace std;
long long c[1005][1005];
int main() {
int n;
cin >> n;
for (int i = 0; i <= n; i++) {
c[i][0] = c[i][i] = 1;
for (int j = 1; j < i; j++) {
c[i][j] = __________________;
}
}
return 0;
}
第5题
中级
2.0分
单选
下列程序输出的值为( )。
#include
using namespace std;
long long qpow(long long a, long long b, long long mod) {
long long ans = 1 % mod;
while (b) {
if (b & 1)
ans = ans * a % mod;
a = a * a % mod;
b >>= 1;
}
return ans;
}
int main() {
cout << qpow(3, 20, 17) << endl;
return 0;
}
第6题
中级
2.0分
单选
归并排序每次把长度为n的序列分成两个规模约为n/2的子序列,递归排序后再用线性时间合并。该算法的时间复杂度通常为( )。
第7题
中级
2.0分
单选
在平面直角坐标系中,三角形三个顶点为A(1,1)、B(5,2)、C(3,6),该三角形面积为( )。
第8题
中级
2.0分
单选
某程序需要判断点P(x,y)是否在以原点为圆心、半径为5的圆内或圆上。下列判断条件正确的是( )。
// A选项
if (x * x + y * y <= 25)
cout << "Inside" << endl;
// B选项
if (abs(x) + abs(y) <= 5)
cout << "Inside" << endl;
// C选项
if (x * x - y * y <= 25)
cout << "Inside" << endl;
第9题
中级
2.0分
单选
某无向带权图有边(1,2,4)、(1,3,2)、(2,3,1)、(2,4,5)、(3,4,8)、(3,5,10)、(4,5,2)。该图的最小生成树总权值为(
第10题
中级
2.0分
单选
有向非负权图边为1→2(3)、2→4(4)、1→3(10)、3→4(1)、2→3(2)。使用Dijkstra算法从1号顶点出发到4号顶点的最短路径长度为( )
第11题
中级
2.0分
单选
下列代码片段的时间复杂度为( )。
long long s = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j * j <= n; j++) {
s += i + j;
}
}
第12题
中级
2.0分
单选
某优化问题的答案是[1,M]内的整数,存在单调判定函数check(x),且每次判定的时间复杂度为O(n)。使用二分答案求最小可行值,整体时间复杂度通常为( )
第13题
中级
2.0分
单选
下列线性筛的代码片段中,当枚举到质数p且i%p==0时,使用break;语句停止继续枚举。这样做的主要目的是( )。
for (int i = 2; i <= n; ++i) {
if (!is_composite[i])
primes.push_back(i);
for (int p : primes) {
if (i * p > n)
break;
is_composite[i * p] = true;
if (i % p == 0)
break; // 这条语句的目的是?
}
}
第14题
中级
2.0分
单选
在C++中,关于类的继承和构造、析构顺序,下列说法正确的是( )。
第15题
中级
2.0分
单选
将4个元素按1、2、3、4的顺序入栈,在该过程中可随时插入出栈操作。下列序列中不可能作为出栈序列的是( )。
第16题
中级
2.0分
判断
若一项任务可从两种互斥的方案中选择一种完成,其中,方案A有m种做法,方案B有n种做法,则总做法数为m+n。
第17题
中级
2.0分
判断
将n个不同元素围成一圈,若只把旋转视为同一种排法、翻转仍视为不同排法,则方案数为(n-1)!。
第18题
中级
2.0分
判断
从n个不同元素中可重复地选取k个且不考虑顺序,方案数为C(n+k-1,k)。
第19题
中级
2.0分
判断
杨辉三角中的组合数满足C(n,k)=C(n-1,k)+C(n-2,k)。
第20题
中级
2.0分
判断
快速幂通过二进制拆分指数,可以在O(log b)时间内计算a^b mod m。
第21题
中级
2.0分
判断
只要图中不存在负权环,Dijkstra算法就一定能正确处理带负权边的图。
第22题
中级
2.0分
判断
若一张连通无向图所有边权两两不同,则它的最小生成树一定唯一。
第23题
中级
2.0分
判断
判断点(x,y)是否在以原点为圆心、半径为r的圆内或圆上时,可以比较x²+y²与r²,不必先开平方。
第24题
中级
2.0分
判断
若能写出判定函数check(x),表示'答案为x时是否可行',即使check(x)不满足单调性,也一定可以使用二分答案求最优解。
第25题
中级
2.0分
判断
归并排序是一种稳定排序算法,常见实现的时间复杂度为O(n log n)。
第26题
中级
25.0分
编程
. 线网建设
时间限制:1.0 s
内存限制:512.0 MB
Λ市有n座基站需要通过线网互相连接。第i座基站位于二维平面上坐标(xi,yi)处。
第i座基站与第j座基站之间的距离定义为d(i,j)=√((xi-xj)²+(yi-yj)²)。
如果两座基站之间的距离不超过给定的整数l,那么可以修建连接这两座基站的线路,线路长度为基站间的距离。如果从一座基站出发,经过一系列线网中的线路可以到达另一座基站,则称这两座基站是互相连接的。
请问使得n座基站两两之间都互相连接,需要修建的线路总长度最小是多少?如果不能修建满足条件的线网,则输出Impossible。
对于40%的测试点,保证1≤n≤100。
对于所有测试点,保证1≤n≤500,1≤l≤100,-100≤xi,yi≤100。
【输入格式】
第一行,两个正整数n,l,分别表示基站数量与线路长度上限。 接下来n行,每行两个整数xi,yi,表示基站的坐标。
【输出格式】
输出一行。如果能修建满足条件的线网,则输出需要修建的最小线路总长度,保留两位小数。否则输出Impossible。
【样例】
4 2 1 0 -1 -1 0 0 1 1 4 1 1 0 -1 -1 0 0 1 1
【样例解释】
3.41 Impossible
第27题
中级
25.0分
编程
. 堆石子
时间限制:1.0 s
内存限制:512.0 MB
有m堆石子,编号为1,2,…,m,其石子数量分别记为a1,a2,…,am。
现在要求第1堆石子恰有n个(即a1=n),并且此后每堆石子的数量严格小于前一堆,即ai < ai-1(2≤i≤m)。此外,每堆至少需要有一个石子,即ai ≥ 1。
在总石子数量不设限制的情况下,给定m ≥ 2, n ≥ 1,有多少个满足要求的石子堆放方案?
两个方案不同,当且仅当,两个方案中至少有一堆石子数量不同。
如果不存在满足要求的方案,输出0。由于方案数可能很大,请输出方案数对10^9+7取模后的结果。
对于数据点1,2:2≤m≤100, 1≤n≤100
对于数据点3,4,5:2≤m≤100, 1≤n≤10^8
对于数据点6,7,8,9,10:2≤m≤10^5, 1≤n≤10^8
【输入格式】
输入一行两个正整数m和n。
【输出格式】
输出一个整数,表示总方案数对10^9+7取模后的结果。
【样例】
3 5
【样例解释】
6