
一、题目背景回顾
红军长征行军符合等差数列规律:
第 1 天行军距离:x 公里(可以是小数,例 30.5)
后续每一天,比前一天多走y 公里(公差)
需要算出 2 个结果:
① 第n天当天走了多少公里
② 前n天累计一共行进多少公里
输入规则:一行填入 3 个数据(第一天里程、每日增量、目标天数),空格隔开
输出规则:两个结果空格分隔,数值强制保留 2 位小数
示例演示:
输入:
10 2 5输出:
18.00 70.00
二、数学原理拆解(核心等差数列公式)
这道题本质是小学数学的等差数列,不用手写循环累加,套公式效率更高:
1. 第 n 天单日里程(通项公式)
第 1 天不用叠加增量,从第 2 天才开始累加公差,一共叠加(n−1)次:
an=x+(n−1)×y
样例验算:10+(5−1)×2=18,和输出结果一致
2. 前 n 天总里程(求和公式)
等差数列求和通用公式:总和=2天数×(首日里程+第n日里程)
Sn=2n×(x+an)
样例验算:5×(10+18)÷2=70,匹配标准答案
💡新手避坑提醒:千万别写成x+n×y!第n天只增加了n−1次路程,是高频失分点
三、完整可运行 Python 代码(注释拉满)
# 读取整行输入,按空格切割成字符串列表input_data = input().split()# 数据类型转换:路程支持小数转浮点,天数是整数first_day = float(input_data[0])daily_add = float(input_data[1])target_day = int(input_data[2])# 套用等差数列公式运算day_distance = first_day + (target_day - 1) * daily_addtotal_distance = target_day * (first_day + day_distance) / 2# 格式化输出,强制固定保留2位小数print(f"{day_distance:.2f}{total_distance:.2f}")
代码分步解释
input().split():把一行输入按空格拆开,拆分出 3 个独立文本 类型转换:路程用 float()兼容小数输入;天数用int()做整数运算f-string 格式化: : .2f会自动补齐末尾的 0,比如 18 自动转为18.00,适配题目格式要求
四、自测实操小练习
可以自行输入数据校验代码正确性:
测试输入:5.5 1.5 4
分步手算:
第 4 天里程:5.5+(4−1)×1.5=10.00
总里程:4×(5.5+10)÷2=31.00
程序预期输出:
10.00 31.00,运行代码核对即可
五、新手易错清单汇总
类型写错:里程不能用 int强制转整数,会丢失小数精度;天数不能用浮点类型公式下标错误:增量次数是n−1而非n 格式疏漏:忘记固定保留两位小数,会被判格式错误 输入适配:代码天然兼容小数输入(如 30.5 2.3 7),不用额外改造
文末小总结
这道历史题材的编程题,核心是把现实场景抽象成数学等差数列模型。入门编程解题通用套路:先推导数学公式→做输入类型适配→编写运算逻辑→按规范格式化输出,后续碰到行程、递增产量类题目,都能复用这套解题思路~
夜雨聆风