一、先看原题:



二、题目解析
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