【发布时间】:2019-08-26 05:02:09
【问题描述】:
我在一次在线挑战中遇到了以下问题。
考虑以下向量:
x = [3, 4, ...]
y = [2, 3, ...]
这样对于 i >= 2:
x[i] = x[i-1] + 3 * y[i-2]
y[i] = 2 * y[i-1] + 2 * x[i-2]
什么是 x[10^15]?
虽然这个问题有一个非常简单的解决方案,但问题是 10^15 的值无法在短时间内计算出来。我唯一能想到的是我们必须从递归关系中推导出一个多项式——但这并不容易。我错过了什么吗?
【问题讨论】:
-
这个:math.stackexchange.com/questions/784710/… 可以直接改编。要快速计算矩阵的 n 次方,请使用二进制取幂:cp-algorithms.com/algebra/binary-exp.html。
-
@dyukha 我无法形成矩阵。如果我假设基数为 [ [xn, yn-1], [xn-1, yn] ],乘法数为 [ [1, 2], [3, 2] ]。 yn-1 和 xn-1 在转换后不会保持循环格式。你能告诉我矩阵吗?
-
如果是斐波那契,你的坐标是 [F[n], F[n-1]],使用矩阵 [[1 1], [1 0]] 你可以从 [F [n-1],F[n-2]]。在这种情况下,您的坐标是 [x[n], x[n-1], y[n], y[n-1]],因此您需要一个 4x4 矩阵。
-
@dyukha 谢谢。知道了。如果我有时间,我会尝试发布正确的解决方案。
标签: recurrence