1

GESP认证C++编程真题解析 | 202312 二级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


编程题

B3923 小杨做题

【题目来源】

洛谷:[B3923 GESP202312 二级] 小杨做题 - 洛谷

【题目描述】

为了准备考试,小杨每天都要做题。第 \(1\) 天,小杨做了 道题;第 \(2\) 天,小杨做了道题;从第 \(3\) 天起,小杨每天做的题目数量是前两天的总和。

此外,小杨还规定,当自己某一天做了大于或等于 \(m\) 题时,接下来的所有日子里,他就再也不做题了。

请问,到了第 \(N\) 天,小杨总共做了多少题呢?

【输入】

总共 \(4\) 行。第一行一个整数 \(a\),第二行一个整数 \(b\),第三行一个整数 \(m\),第四行一个整数 \(N\)

【输出】

一行一个整数,表示小杨 \(N\) 天里总共做了多少题目。

【输入样例】

1
2
10
5

【输出样例】

19

【算法标签】

《洛谷 B3923 二级] 小杨做题》 #GESP# #2023#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件
const int N = 370;       // 定义数组最大长度
using namespace std;      // 使用标准命名空间

int m, n;    // m:阈值,n:项数
int a[N];    // 存储数列的数组

int main() {
    // 输入前两项和参数m,n
    cin >> a[1] >> a[2] >> m >> n;
    
    // 生成数列直到第n项或超过阈值m
    for (int i = 3; i <= n; i++) {
        a[i] = a[i-1] + a[i-2];  // 斐波那契数列规则
        if (a[i] >= m) {          // 如果超过阈值m
            n = i;                // 调整实际计算的项数
            break;               // 终止生成
        }
    }
    
    // 计算数列前n项的和
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        ans += a[i];  // 累加每项
    }
    
    cout << ans << endl;  // 输出结果
    return 0;             // 程序正常结束
}

【运行结果】

1
2
10
5
19

B3924 小杨的 H 字矩阵

【题目来源】

洛谷:[B3924 GESP202312 二级] 小杨的 H 字矩阵 - 洛谷

【题目描述】

小杨想要构造一个 \(N\times N\) 的 H 字矩阵(\(N\) 为奇数),具体来说,这个矩阵共有 \(N\) 行,每行 \(N\) 个字符,其中最左列、最右列都是 | ,而中间一行(即第 \(\frac{N+1}{2}\) 行)的第 \(2\sim N-1\) 个字符都是 - ,其余所有字符都是半角小写字母 a 。例如,一个 \(N=5\) 的 H 字矩阵如下:

|aaa|
|aaa|
|---|
|aaa|
|aaa|

请你帮小杨根据给定的 \(N\) 打印出对应的“H 字矩阵”。

【输入】

一行一个整数 \(N\)\(5\lt N\lt 49\) ,保证 \(N\) 为奇数)。

【输出】

输出对应的“H 字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 \(N\) 行,每行除了换行符外恰好包含 \(N\) 个字符,这些字符要么是 - ,要么是 | ,要么是 a 。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。

【输入样例】

5

【输出样例】

|aaa|
|aaa|
|---|
|aaa|
|aaa|

【算法标签】

《洛谷 B3924 小杨的H字矩阵》 #GESP# #2023#

【代码详解】

#include <bits/stdc++.h>
using namespace std;

const int N = 55;  // 最大矩阵大小
int n;             // 矩阵大小
char a[N][N];      // 字符矩阵

int main()
{
    // 输入矩阵大小n
    cin >> n;
    
    // 初始化矩阵,全部填充为'a'
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            a[i][j] = 'a';  // 填充背景字符'a'
        }
    }
    
    // 绘制垂直边界线:第一列和最后一列为'|'
    for (int i = 1; i <= n; i++)
    {
        a[i][1] = '|';  // 第一列
        a[i][n] = '|';  // 最后一列
    }
    
    // 绘制水平中心线:中间一行的第2到n-1列为'-'
    for (int i = 2; i < n; i++)
    {
        a[(n + 1) / 2][i] = '-';  // 中心行,中间列
    }
    
    // 输出矩阵
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            cout << a[i][j];
        }
        cout << endl;  // 每行结束后换行
    }
    
    return 0;
}

【运行结果】

5
|aaa|
|aaa|
|---|
|aaa|
|aaa|
posted @ 2026-01-19 17:12  热爱编程的通信人  阅读(0)  评论(0)    收藏  举报