2025年12月GESP(C++二级): 黄金格
题目描述
小杨在探险时发现了一张神奇的矩形地图,地图有H HH行和W WW列。每个格子的坐标是( r , c ) (r, c)(r,c),其中r rr表示行号从1 11到H HH,c cc表示列号1 11到W WW。
小杨听说地图中隐藏着一些“黄金格”,这些格子满足一个神秘的数学挑战:当格子坐标( r , c ) (r, c)(r,c)代入特定的不等式关系成立时,该格子就是黄金格。具体来说,黄金格的条件是:r 2 + c 2 ≤ x + r − c \sqrt{r^2 + c^2} \leq x + r - cr2+c2≤x+r−c。
例如,如果参数x = 5 x = 5x=5,那么格子( 4 , 3 ) (4, 3)(4,3)就是黄金格。因为左边坐标平方和的平方根4 2 + 3 2 \sqrt{4^2 + 3^2}42+32算出来是5 55,而右边5 + 4 − 3 5 + 4 - 35+4−3算出来是6 66,5 55小于等于6 66,符合条件。
输入格式
三行,每行一个正整数,分别表示H , W , x H,W,xH,W,x。含义如题面所示。
输出格式
一行一个整数,代表黄金格数量。
输入输出样例 1
输入 1
4 4 2输出 1
4说明/提示
样例解释
图中标注为黄色的四个格子是黄金格,坐标分别为( 1 , 1 ) (1, 1)(1,1),( 2 , 1 ) (2, 1)(2,1),( 3 , 1 ) (3, 1)(3,1),( 4 , 1 ) (4, 1)(4,1)。
数据范围
对于所有测试点,保证给出的正整数不超过1000 10001000。
思路分析
这道题的核心是判断每个格子是否满足条件:r 2 + c 2 ≤ x + r − c \sqrt{r^2 + c^2} \leq x + r - cr2+c2≤x+r−c
解题要点:
- 需要遍历地图上的所有格子,即H × W H \times WH×W个格子
- 对每个格子计算:
- 左边:r 2 + c 2 \sqrt{r^2 + c^2}r2+c2(欧几里得距离)
- 右边:x + r − c x + r - cx+r−c
- 比较两边大小
- 注意数据范围:H , W , x H, W, xH,W,x都不超过1000,最坏情况需要计算10 6 10^6106次,完全可以接受
代码实现
#include<bits/stdc++.h>usingnamespacestd;inth,w,x,cnt=0;// h:行数,w:列数,x:参数,cnt:计数器intmain(){// 读取输入cin>>h>>w>>x;// 遍历所有格子for(intr=1;r<=h;r++){for(intc=1;c<=w;c++){// 判断条件是否成立// sqrt(r*r + c*c) <= x + r - cif(sqrt(r*r+c*c)<=x+r-c){cnt++;// 计数器加1}}}// 输出结果cout<<cnt;return0;}功能分析
1. 输入处理
- 读取三个整数:地图行数H HH、列数W WW和参数x xx
- 存储在变量
h,w,x中
2. 遍历与判断
- 使用双重循环遍历所有坐标( r , c ) (r, c)(r,c)
- 对每个格子计算不等式两边:
- 左边:r 2 + c 2 \sqrt{r^2 + c^2}r2+c2,即从原点(0,0)到点(r,c)的欧几里得距离
- 右边:x + r − c x + r - cx+r−c,由参数x和坐标计算得到
- 判断不等式是否成立
3. 计数与输出
- 使用计数器
cnt记录满足条件的格子数量 - 最后输出计数结果
4. 算法复杂度
- 时间复杂度:O ( H × W ) O(H \times W)O(H×W)
- 最坏情况:1000 × 1000 = 10 6 1000 \times 1000 = 10^61000×1000=106次循环
- 每次循环包含一次平方根计算和一些简单运算
- 空间复杂度:O ( 1 ) O(1)O(1),只使用了几个变量
各种学习资料,助力大家一站式学习和提升!!!
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}- 一、CSP信奥赛C++通关学习视频课:
- C++语法基础
- C++语法进阶
- C++算法
- C++数据结构
- CSP信奥赛数学
- CSP信奥赛STL
- 二、CSP信奥赛C++竞赛拿奖视频课:
- 信奥赛csp-j初赛高频考点解析
- CSP信奥赛C++复赛集训课(12大高频考点专题集训)
- 三、考级、竞赛刷题题单及题解:
- GESP C++考级真题题解
- CSP信奥赛C++初赛及复赛高频考点真题解析
- CSP信奥赛C++一等奖通关刷题题单及题解
详细内容:
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转
2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转
3、csp信奥赛冲刺一等奖有效刷题题解:
CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
- 2025 csp-j 复赛真题及答案解析(最新更新)
- 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
- 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
- 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
- 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
- 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
- 2020 ~ 2024 csp 复赛真题题单及题解
- 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
- 2021 ~ 2024 csp-s 初赛高频考点解析
- 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
- 2024 csp-j 初赛真题及答案解析
- 2025 csp-j 初赛真题及答案解析(最新更新)
- 2025 csp-s 初赛真题及答案解析(最新更新)
- 2025 csp-x (山东)初赛真题及答案解析(最新更新)
- 2025 csp-x (江西)初赛真题及答案解析(最新更新)
- 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)
CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
- 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图
4、GESP C++考级真题题解:
GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转
GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转
· 文末祝福 ·
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}