版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

仓库源文站点原文


title: "模板 & 题解 - [Luogu P4000] 斐波那契数列" categories:


题目链接

<!-- more -->

原始题面

题目描述

大家都知道, 斐波那契数列是满足如下性质的一个数列:

输入格式

输出格式

输入输出样例

输入 #1

5
1000000007

输出 #1

5

输入 #2

10
1000000007

输出 #2

55

说明/提示

对于 $100\%$ 的数据, $n \leq 10^{30000000}, p<2^{31}$

解题思路

科技题

先摆个论文: The Period of the Fibonacci Sequence Modulo j

这篇论文给出了找 Fibonacci 数列和 Lucas 数列循环节的方法 (实际上所有二阶递推数列都可以这样做)

简单来说就是这样:

代码里还有一些别的科技, 推荐看一看

复杂度

$O(\max{\lg n,\sqrt p})$

代码参考

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb cpa_cpp title:Luogu_P4000 Luogu/P4000/0.cpp %} </details>