GESP2025年12月认证C++二级真题与解析(编程题2 (黄金格))

一、先看原题:

二、题目解析

1、📖 故事背景

小杨来到了一张 神奇地图 🗺️✨

地图是一个方格世界:

  • H 行

  • W 列

  • 每个格子都有坐标 (行号, 列号)

但是!

👉 不是所有格子都普通

👉 有些是 ✨ 黄金格


2、🧠 黄金格的秘密条件

一个格子 (r, c) 是黄金格,当:

cpp 复制代码
√(r² + c²) ≤ x + r - c

听起来吓人?😄

其实我们只要 照着算 就行!


3、🧩 程序思路(像走地图)

1️⃣ 一行一行看

2️⃣ 一列一列看

3️⃣ 对每个格子:

  • 计算左边

  • 计算右边

  • 判断能不能当黄金格

4️⃣ 能 → 计数 +1


4、💻 参考程序

cpp 复制代码
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int H, W, x;
    cin >> H >> W >> x;

    int ans = 0;  // 黄金格数量

    for (int r = 1; r <= H; r++) {
        for (int c = 1; c <= W; c++) {
            if (sqrt(r * r + c * c) <= x + r - c) {
                ans++;
            }
        }
    }

    cout << ans << endl;
    return 0;
}

5、🔍 逐行讲解

cpp 复制代码
#include <cmath>

👉 因为要用 sqrt()(开平方)


cpp 复制代码
for (int r = 1; r <= H; r++)

👉 在地图上 一行一行走


cpp 复制代码
for (int c = 1; c <= W; c++)

👉 每一行里,一列一列看


cpp 复制代码
sqrt(r * r + c * c)

👉 算左边的数学公式


cpp 复制代码
if ( ... )
    ans++;

满足条件 → 找到一个黄金格 ✨


6、 题目要点:

  • 双重 for 循环(二维地图)

  • 使用 sqrt() 数学函数

  • 把复杂条件写进 if


相关推荐
Qt程序员9 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
qeen879 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
王老师青少年编程10 小时前
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索案例实践3)
c++·记忆化搜索·方格取数·csp·信奥赛·csp-s·提高组
Titan202411 小时前
Linux动静态库
linux·服务器·c++
j_xxx404_11 小时前
MySQL表操作硬核解析:从 CREATE TABLE 到磁盘文件、ALTER TABLE 与 DDL 风险
运维·服务器·数据库·c++·mysql·adb·ai
wuminyu12 小时前
Java锁机制之park和unpark源码剖析
java·linux·c语言·jvm·c++
玖玥拾12 小时前
C/C++ 基础笔记(十一)类的进阶
c语言·c++·设计模式·
-森屿安年-12 小时前
1137. 第 N 个泰波那契数
c++·动态规划
程序员老舅13 小时前
从内核视角,看Linux文件读写过程
linux·服务器·c++·内核·linux内核·vfs·linux内存
Soari13 小时前
llama.cpp更新(b9553):LLM inference in C/C++,本地和云端实现高性能大模型推理
c语言·c++·llama