第十六届蓝桥杯C++真题
时间: 2025-07-04 17:11:30 浏览: 4
### 第十六届蓝桥杯 C++ 真题概述
#### 题目背景
第十六届蓝桥杯竞赛于2025年举办,涉及多个组别(如A组、B组、C组以及研究生组),每组别的题目设计均针对不同层次参赛者的水平。以下是基于引用内容整理的部分真题及其解析。
---
#### **题目 A:寻找质数**
此题属于基础算法类问题,目标是从一组整数中筛选出所有的质数并统计其数量。
- 输入:一个正整数 `N` 表示范围 `[1, N]` 的区间。
- 输出:范围内所有质数的数量。
实现方法可以采用埃拉托色尼筛法优化性能[^1]:
```cpp
#include <iostream>
using namespace std;
int countPrimes(int n) {
if (n < 2) return 0;
bool isPrime[n + 1];
fill(isPrime, isPrime + n + 1, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= n; ++i) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
int primeCount = 0;
for (int k = 2; k <= n; ++k) {
if (isPrime[k]) primeCount++;
}
return primeCount;
}
int main() {
int N;
cin >> N;
cout << countPrimes(N) << endl;
}
```
---
#### **题目 B:图形绘制**
该题要求根据输入参数生成特定形状的二维图案。例如,通过嵌套循环控制字符输出形成矩形或三角形结构[^2]。
代码示例:
```cpp
#include <iostream>
using namespace std;
void drawPattern(int rows) {
for (int i = 1; i <= rows; ++i) {
for (int j = 1; j <= i; ++j) {
cout << "* ";
}
cout << endl;
}
}
int main() {
int R;
cin >> R;
drawPattern(R);
}
```
---
#### **题目 C:数值迭代计算**
本题考察基本数学运算与逻辑判断能力。已知三个初始变量 `a`, `b`, `c` 和迭代次数 `n`,需按照指定规则更新这些值直至完成所有轮次[^3]。
核心公式如下:
- \( a_{new} = \frac{b + c}{2} \)
- \( b_{new} = \frac{a + c}{2} \)
- \( c_{new} = \frac{a + b}{2} \)
最终打印最后一次更新后的三者取值即可。
代码片段:
```cpp
#include <bits/stdc++.h>
#define int long long
const int mod = 1e9 + 7;
using namespace std;
void solve() {
int a, b, c, n;
cin >> a >> b >> c >> n;
n = min((long long)1000, n); // 设置上限防止超时
while (n--) {
int a_new = (b + c) / 2;
int b_new = (a + c) / 2;
int c_new = (a + b) / 2;
a = a_new; b = b_new; c = c_new;
}
cout << a << " " << b << " " << c << endl;
}
signed main() {
int T;
cin >> T;
while (T--) solve();
}
```
---
#### **题目 D:空间填充问题**
此类问题是典型的几何优化模型,通常需要考虑如何高效利用有限资源满足约束条件。假设存在若干大小固定的立方体容器用于装载小型物品,则最大可容纳数目可通过简单除法得出结论[^4]。
解答过程如下所示:
\[ V_{\text{max}} = \left(\frac{\text{length}_{\text{container}}}{\text{side}_{\text{item}}}\right) \times \left(\frac{\text{width}_{\text{container}}}{\text{side}_{\text{item}}}\right) \times \left(\frac{\text{height}_{\text{container}}}{\text{side}_{\text{item}}}\right) \]
实例化程序:
```cpp
#include <iostream>
using namespace std;
int main() {
int L_container = 200, W_container = 250, H_container = 240;
int side_item = 40;
int max_items = (L_container / side_item) * (W_container / side_item) * (H_container / side_item);
cout << max_items << endl;
}
```
---
### 总结
以上列举了部分典型考题类型及其解决方案框架,涵盖了从初等到高级的知识点应用。对于进一步深入学习或者备战比赛而言,建议反复练习类似案例以提升实战技巧。
阅读全文
相关推荐


















