乐于分享
好东西不私藏

2026信息素养大赛算法应用初中组复赛真题t1

2026信息素养大赛算法应用初中组复赛真题t1

一、题目背景回顾

红军长征行军符合等差数列规律:

  1. 第 1 天行军距离:x 公里(可以是小数,例 30.5)

  2. 后续每一天,比前一天多走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}")

代码分步解释

  1. input().split()
    :把一行输入按空格拆开,拆分出 3 个独立文本
  2. 类型转换:路程用float()兼容小数输入;天数用int()做整数运算
  3. f-string 格式化:: .2f会自动补齐末尾的 0,比如 18 自动转为18.00,适配题目格式要求

四、自测实操小练习

可以自行输入数据校验代码正确性:

测试输入:5.5 1.5 4

分步手算:

  1. 第 4 天里程:5.5+(4−1)×1.5=10.00

  2. 总里程:4×(5.5+10)÷2=31.00

    程序预期输出:10.00 31.00,运行代码核对即可

五、新手易错清单汇总

  1. 类型写错:里程不能用int强制转整数,会丢失小数精度;天数不能用浮点类型
  2. 公式下标错误:增量次数是n−1而非n
  3. 格式疏漏:忘记固定保留两位小数,会被判格式错误
  4. 输入适配:代码天然兼容小数输入(如30.5 2.3 7),不用额外改造

文末小总结

这道历史题材的编程题,核心是把现实场景抽象成数学等差数列模型。入门编程解题通用套路:先推导数学公式→做输入类型适配→编写运算逻辑→按规范格式化输出,后续碰到行程、递增产量类题目,都能复用这套解题思路~