📜  求系列 12, 105, 1008, 10011, ... 的 n 项之和(1)

📅  最后修改于: 2023-12-03 14:55:59.955000             🧑  作者: Mango

一个求系列和的 Python 程序

本程序实现了一个函数,接受一个整数 $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$ 很大时,计算速度可能较慢,但不会超时或者消耗过多的内存。