📜  前三项在AP中且后三项在GP中的四倍数(1)

📅  最后修改于: 2023-12-03 15:36:58.004000             🧑  作者: Mango

前三项在AP中且后三项在GP中的四倍数

简介

这个题目要求编写一个函数,接受一个整数列表作为参数,并返回四倍数列表,其中前三项在算术数列中,后三项在等比数列中。

函数签名
def four_mult(lst: List[int]) -> List[int]:
    pass
输入格式

函数接受一个整数列表,列表长度为六,每个元素都为整数。

输出格式

函数返回一个整数列表,列表长度为六,每个元素都为四倍数,即 $4 \times n$,其中前三项在算术数列中,后三项在等比数列中。

输入样例
lst = [1, 2, 3, 2, 4, 8]
输出样例
[4, 8, 12, 8, 16, 32]
思路分析

前三项在算术数列中,我们可以计算出公差,然后根据公差计算出后三项在算术数列中的位置,最后计算出后三项在等比数列中的值。

代码实现
from typing import List


def four_mult(lst: List[int]) -> List[int]:
    # 计算前三项在算术数列中的公差
    d = lst[1] - lst[0]
    
    # 计算后三项在算术数列中的位置
    a4 = lst[2] + d
    a5 = lst[2] + 2 * d
    a6 = lst[2] + 3 * d
    
    # 计算后三项在等比数列中的值
    r = a5 / a4
    b4 = lst[2] * r
    b5 = b4 * r
    b6 = b5 * r
    
    # 返回结果
    return [4*n for n in (lst + [b4, b5, b6])]
代码说明
  1. 先计算出前三项在算术数列中的公差 $d$;
  2. 然后计算出后三项在算术数列中的位置 $a_4, a_5, a_6$;
  3. 根据等比数列的性质,可以得到 $r = \frac{a_5}{a_4}$,然后计算出后三项在等比数列中的值 $b_4, b_5, b_6$;
  4. 最后将列表中的所有值乘以 4 即可。