【发布时间】:2015-07-21 14:08:13
【问题描述】:
f(n) 定义为:f(n) = 1^k+2^k+3^k+...+n^k,所以是和 直到 n 的所有自然数的 k 次方。
在这个问题中你将要计算,
f(1) + f(2) + f(3) + ... + f(n)
1 ≤ n ≤ 123,456,789 和 0 ≤ k ≤ 321
(原问题链接:http://www.spoj.com/problems/ASUMHARD/Matrix)
一种幼稚的算法,逐个计算每个术语运行速度太慢,所以我想尝试解决递归关系。
天真的方法:
total = 0
for i = 1 to n:
for j = 1 to i:
total += j^k
return total
求幂可用于求解线性递归。 我知道如何解决线性重复,例如:
f(n) = f(n-k1) + f(n-k2) + ... + constant
但我找不到任何关于如何解决类似问题的信息
f(n) = f(n-k1) + f(n-k2) + ... + n^m
或
f(n) = f(n-k1) + f(n-k2) + ... + n*m
或
f(n) = f(n-k1) + f(n-k2) + ... + k^n
即 涉及一个“n”项。
如何解决这样的递归,或者如何形成初始矩阵,其幂将用于解决递归?如果不使用矩阵求幂,至少有人可以描述一下如何处理它的想法吗?
【问题讨论】:
-
这似乎更像是一道数学题,而不是一道编程题。
-
你能发布你想要解决的确切重复吗?
-
这似乎是一道数学题,而不是一道编程题。
-
我也不明白,你为什么要对这个问题使用矩阵指数。
-
这是一个关于 spoj 的编程问题。你能至少描述一下要接近的想法吗
标签: algorithm matrix recurrence