已知数列奇偶位差值规律求第n项的更简单实现方法
交替差值数列第n项简化实现方案
你的现有实现逻辑是正确的,确实可以进一步简化,核心是利用数列的2步周期特性,把奇偶分支的公式合并。
简化思路
这个数列的差值每2项循环一次:奇数位后加d1,偶数位后加d2,每完成2次步进,总增量固定为d1 + d2。我们可以直接通过步进次数的整数除法和取余统一计算:
- 总步进数 = n - 1
- 完整周期数 = 总步进数 // 2
- 剩余步进数 = 总步进数 % 2
- 最终值 = a + 完整周期数 * (d1 + d2) + 剩余步进数 * d1
简化后代码
a = int(input()) b = int(input()) c = int(input()) n = int(input()) d1, d2 = b - a, c - b step = n - 1 res = a + (step // 2) * (d1 + d2) + (step % 2) * d1 print(res)
验证示例
用你给出的示例a=97、b=100、c=98、n=5验证:
d1=3,d2=-2,step=4
完整周期数=4//2=2,剩余步进数=0
res=97 + 2*(3-2) + 0*3 = 99,和示例结果一致。
优化点说明
- 去掉了分支判断,代码更简洁
- 全程使用整数运算,无需额外做int类型转换,避免大数值场景下浮点运算的精度隐患
- 执行效率更高,减少了分支跳转的开销
内容的提问来源于stack exchange,提问作者students
相关产品推荐
相关产品推荐

