一级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++一级练习 luogu-P1423, 小玉在游泳
📅 2024-11-27·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#基础语句
GESP一级练习,循环和计算运算基础练习,难度★✮☆☆☆。
luogu-P1423
题目要求
题目描述
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游 米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的 。现在小玉想知道,如果要游到距离 米的地方,她需要游多少步呢。请你编程解决这个问题。
输入格式
输入一个实数 (单位:米),表示要游的目标距离。
输出格式
输出一个整数,表示小玉一共需要游多少步。
样例输入 #1
BASH
4.3
样例输出 #1
BASH
3
数据范围
数据保证,,且 小数点后最多只有一位。
题目分析
本题目要求我们根据输入的目标距离,计算小玉游泳所需的步数。根据题目描述:
- 首先,我们需要读取输入的目标距离(单位:米),并初始化一个变量用于存储已游的总距离。
- 接着,设定初始游泳距离为2米,并在每一步中将当前游泳距离减少到上一步的98%。
- 在每一步中,我们将当前游泳距离累加到总距离中,并记录步数。
- 当总距离达到或超过目标距离时,停止计算并输出所需的步数。
示例代码
CPP
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
double n; // 目标距离
double sum = 0; // 已游的总距离
double last = 0; // 上一步的游泳距离
double current = 0; // 当前步的游泳距离
scanf("%lf", &n); // 读取目标距离
int count = 0; // 游泳步数计数器
while (true) {
count++; // 增加步数计数
if (count == 1) { // 第一步游泳距离
current = 2.0; // 初始化当前游泳距离为2米
sum += current; // 累加到总距离
last = current; // 更新上一步距离
} else { // 后续游泳距离
current = last * 0.98; // 当前距离为上一步的98%
sum += current; // 累加到总距离
last = current; // 更新上一步距离
}
if (sum >= n) { // 如果总距离达到或超过目标距离
break; // 退出循环
}
}
printf("%d", count); // 输出所需的步数
return 0; // 程序结束
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!