📅  最后修改于: 2023-12-03 14:55:59.955000             🧑  作者: Mango
本程序实现了一个函数,接受一个整数 $n$ 作为参数,求出系列 $12, 105, 1008, 10011, ...$ 的前 $n$ 项之和。
from series_sum import series_sum
result = series_sum(5) # 12 + 105 + 1008 + 10011 + 100114 = 111250
这个系列具有显然的递推规律。
第一项为 $12$。
从第二项开始,每一项都是前一项乘以 $10$ 再加上 $3$。
$$a_1=12$$ $$a_n=10 \cdot a_{n-1} + 3\ (n\ge2)$$
因此,我们可以直接用循环计算出前 $n$ 项之和。
def series_sum(n):
a, s = 12, 12
for i in range(2, n + 1):
a = a * 10 + 3
s += a
return s
本函数使用整型数据进行计算,不存在精度问题。
当 $n$ 很大时,计算速度可能较慢,但不会超时或者消耗过多的内存。