C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【勾股定理与数列平方递推】GESP二级题解:luogu-B4575 [GESP202609 二级] 直角三角形
CCF GESP 2026年9月认证(第十五次认证)C++ 二级试题,洛谷 B4575。本题严格遵循 CCF GESP 官方大纲规范,重点考察勾股定理与数列平方递推。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
B4575 [luogu-B4575 [GESP202609 二级] 直角三角形]
🔗 洛谷原题传送门:B4575
题目要求
题目描述
小双刚学会勾股定理,得知直角三角形的斜边的平方等于两直角边的平方和。
小双创造了直角三角形数列:数列前两项由小双指定,从第三项开始,数列中的每个数字的平方等于前两项的平方和。
例如,第一项是 3.0,第二项是 4.0,则第三项是 。
小双给定了数列的前两项,并给定一个数列上限,想让你算算数列的第几项会超过小双给定的数列上限?
输入格式
输入三行,第一行一个浮点数是数列第一项,第二行一个浮点数是数列第二项,第三行一个浮点数表示数列上限。
输出格式
输出一个正整数,表示第几项开始会超过小双给定的数列上限。
输入输出样例
样例输入 #1
3.0
4.0
10.0
样例输出 #1
6
说明/提示
数列依次为:。第 6 项超过 10.0。 输入均为不超过 10000 的正数,第一项小于第二项。
题目分析与解题思路
- 数列递推模型:定义 为初值。对于 ,,即 。这项增长本质上是斐波那契数列在平方维度的映射,增长速度非常迅猛。
- 终止条件与初始边界:题目保证 。若 ,则第 1 项即超过;若 ,第 2 项超过;否则使用
while循环不断计算下一项直至超过上限,记录项数并输出。 - C++ 标准库函数:使用
<cmath>中的std::sqrt()函数,完全符合 C++11 标准。
完整参考代码 (C++11)
/**
* Problem: luogu-B4575
* Standard: C++11 (CCF GESP 官方大纲规范)
* Author: OneCoder
*/
#include <iostream>
#include <cmath>
using namespace std;
int main() {
// 快速输入输出
ios::sync_with_stdio(false);
cin.tie(nullptr);
double a, b, limit;
if (!(cin >> a >> b >> limit)) {
return 0;
}
// 特判前两项已超出上限的情况
if (a > limit) {
cout << 1 << "\n";
return 0;
}
if (b > limit) {
cout << 2 << "\n";
return 0;
}
int step = 2;
double prev2 = a; // 前两项中的较早一项 a_{i-2}
double prev1 = b; // 前一项 a_{i-1}
// 循环模拟生成后续项
while (prev1 <= limit) {
double next_val = sqrt(prev2 * prev2 + prev1 * prev1);
step++;
if (next_val > limit) {
cout << step << "\n";
return 0;
}
prev2 = prev1;
prev1 = next_val;
}
cout << step << "\n";
return 0;
}
考点归纳与备考建议
- 考纲匹配度:严格对标 CCF GESP 二级考纲重点,绝不超纲,注重基础算法与逻辑建模规范;
- 规范防范:所有代码严格以 C++11 标准编译运行,针对整数溢出、边界判断、空状态均做了详尽严整的防御性处理。
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
【ASCII字符编码与画布坐标映射】GESP二级题解:luogu-B4576 [GESP202609 二级] 字符变换
CCF GESP 2026年9月认证(第十五次认证)C++ 二级试题,洛谷 B4576。本题严格遵循 CCF GESP 官方大纲规范,重点考察ASCII字符编码与画布坐标映射。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
【GESP】C++二级练习 luogu-B3638, 三角形面积
GESP二级练习,数学函数练习,难度★✮☆☆☆。
【GESP】C++二级练习 luogu-B2080, 计算多项式的值
GESP二级练习,基本数学函数练习,难度★✮☆☆☆。
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com