gpt4 book ai didi

algorithm - 计算线性循环序列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:00 25 4
gpt4 key购买 nike

我有一系列数字 A。有一个索引 - k,它将作为参数传递给程序。该级数是等差数列 (d=1),直到第 k 个元素。例如:

A0 = 0, A1 = 1 [...] Ak-1 = k-1.

从那时起,每个元素都是最后k个元素的总和。例如:

Ak+3 = A2 + A3 + [...] + Ak+2.

用户输入一个数字n(和k,如前所述)。该程序需要计算并返回所述系列 A 的第 n 个元素。

例子:k = 5, n = 8

A0 = 0, A1 = 1, A2 = 2, A3 = 3, A4 = 4, A5 = 10, A7 = 20, A7 = 39, A8 = 76

A = [0,1,2,3,4,10,20,39,76]

An = 76

有什么想法吗?在过去的几天里,这一直困扰着我,但数学从来都不是我的事,所以我想这是找到一个聪明方法的大问题(当然除了有一个循环 - 这听起来并不聪明)。另外,如果我犯了任何错误,抱歉,英语不是我的主要语言。

最佳答案

稍微扩展 Oli Charlesworth 的回答,考虑向量

An = [ An, An-1 ... An -k+1 ]

你知道的

An = An-1 + ... + An-k

所以你可以用 An-1 表示 An

An = B An-1

其中 Bk x k 矩阵,其中第一行为 1,主对角线下方为 1,其他位置为零.例如,对于 k= 4 你有

    1   1   1   1
B = 1 0 0 0
0 1 0 0
0 0 1 0

现在解决复现问题

An = Bn-k+1 A>k-1

Ak-1 = [k-1, k-2, k-3 ... 2, 1, 0]

使用快速矩阵求幂算法,您需要进行 log(n - k + 1) 次矩阵乘法才能得出答案,近似为 log(< em>n) 对于 n>> k。矩阵乘法的成本是 k3 所以总复杂度是 k3 log(n )

关于algorithm - 计算线性循环序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com