欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。
适合人群:
- 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
- 希望系统学习C++/Python编程的初学者
- 想要提升算法与编程能力的编程爱好者
附上汇总帖:GESP认证C++编程真题解析 | 汇总
【题目来源】
洛谷:[B3923 GESP202312 二级] 小杨做题 - 洛谷
【题目描述】
为了准备考试,小杨每天都要做题。第 1 1 1 天,小杨做了 道题;第 2 2 2 天,小杨做了道题;从第 3 3 3 天起,小杨每天做的题目数量是前两天的总和。
此外,小杨还规定,当自己某一天做了大于或等于 m m m 题时,接下来的所有日子里,他就再也不做题了。
请问,到了第 N N N 天,小杨总共做了多少题呢?
【输入】
总共 4 4 4 行。第一行一个整数 a a a,第二行一个整数 b b b,第三行一个整数 m m m,第四行一个整数 N N N。
【输出】
一行一个整数,表示小杨 N 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
1137

被折叠的 条评论
为什么被折叠?



