- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
(这里是初学者)
我想知道如何找到序列 F[n]=F[n-1]+F[n-2] 的第 n 个数。
输入:
F[0] = a;
F[1] = b;
a,b < 101
N < 1000000001
M < 8; M=10^M;
a和b是起始序列号。
n 是我需要查找的序列的第 n 个数。
M 是模数,数字很快变大所以 F[n]=F[n]%10^M,我们求余数,因为只需要第 n 个数的最后一位数
递归方法太慢了:
int fib(int n)
{
if (n <= 1)
return n;
return fib(n-1) + fib(n-2);
}
O(n) 时间的动态规划解决方案也太慢了:
f[i] = f[i-1] + f[i-2];
如果序列的第一个数字是 0 和 1(第 n 个数字可以在 O(log n) 中找到),虽然有一些解决方案可以通过使用以下公式更快地找到第 n 个数字:
If n is even then k = n/2:
F(n) = [2*F(k-1) + F(k)]*F(k)
If n is odd then k = (n + 1)/2
F(n) = F(k)*F(k) + F(k-1)*F(k-1)
(链接到公式和代码实现:https://www.geeksforgeeks.org/program-for-nth-fibonacci-number/)
但是如果起始数字是 25 和 60 这样的数字,这个公式就不起作用了。而且递归方法太慢了。
所以我想知道如何比 O(n) 更快地找到序列的第 n 个数。部分代码会有所帮助。
谢谢。
最佳答案
这个矩阵:
A = / 1 1 \
\ 1 0 /
当乘以列 vector (fn+1, fn)时,其中fn是斐波那契数列中的第n个数序列,将为您提供列 vector (fn+2, fn+1),即它将使您前进一步。无论序列的初始元素是什么,这都有效。
例如:
/ 1 1 \ / 8 \ = / 13 \
\ 1 0 / \ 5 / \ 8 /
所以第n个斐波那契数是An-1v的第一个元素,其中v是包含f1和f0 ,序列中的前两个数字。
因此,如果您可以快速计算 An-1 对某个数取模,这将得到 fn。这可以使用 Exponentiation by squaring 来完成,在 O(logn) 中有效。只需确保在每次乘法和加法之后都执行模运算,以防止数字变得太大。
关于c++ - 斐波那契数列更快,但起始数不同 (F[n]=F[n-1]+F[n-2]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429605/
我在尝试生成具有“价格”轴和“量”轴的图表时遇到问题,类似于 example given 中的图表。在 Highstock 网站上。它可以很好地显示成交量轴,但不能显示价格。 在尝试确定问题的原因时,
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
The allocation function attempts to allocate the requested amount of storage. If it is successful, i
这是我的Program.cs: public static void Main(string[] args) { var host = new WebHostBuilder()
我希望我的应用程序独立于操作系统。因此,我的 config.properties 和日志文件存储在资源文件夹中,我通过相对路径获取这些资源。这是我的项目结构。 这是我的 AppConfig 类: pu
(前言:这是我在 Stack Overflow 上提出的第一个与音频相关的问题,因此我会尽力用最好的措辞来表达。欢迎编辑。) 我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型(proto
我有一个 Pandas DataFrame,我想将其用作 Scrapy Start URL,函数 get_links 打开一个到 DataFrame 的 xlsx,其中有一个我想在其上运行蜘蛛的 Co
我有几个大的 DTD 文件。我用过 trang将它们转换为 XSD 文件,这样我就可以轻松地从 JAXB 和其他实用程序中使用它。但是,生成的 XSD 文件的所有声明元素都位于顶层。这意味着任何元素都
是否有任何工具可以将文件从给定的起始偏移量复制到给定的(结束)偏移量。我还想通过运行 md5sum 确认该工具已正确复制指定的字节。像这样的东西 1) Copy source file star
所以,我有一个程序,我可以使用 Path2D 对象将形状添加到 JPanel,然后我可以单击并拖动它们。我想要做的是能够找到药物后形状的最终 X 和 Y 坐标。坐标必须是左上角坐标。有什么想法吗? /
我是一名优秀的程序员,十分优秀!