洛谷 P1306 斐波那契公约数 题解

本文详细解析洛谷P1306题,探讨斐波那契数列中相邻项的最大公约数性质,并利用矩阵快速幂解决求解斐波那契数列公约数的问题,实现O(logn)的时间复杂度和常数级空间复杂度。
摘要由CSDN通过智能技术生成

博客园同步

原题链接

前置知识:

矩阵乘法、斐波那契数列的矩阵公式。

题意简要:

F i F_i Fi 表示斐波那契数列的第 i i i 项,求:

gcd ⁡ ( F n , F m ) \gcd(F_n,F_m) gcd(Fn,Fm)

我们先考虑 n > m n > m n>m .

首先我们考虑 gcd ⁡ \gcd gcd 的两个性质,后面要用:

gcd ⁡ ( a , b ) = gcd ⁡ ( b , a − b ) = gcd ⁡ ( a − k ⋅ b ) \gcd(a,b) = \gcd(b,a-b) = \gcd(a-k \cdot b) gcd(a,b)=gcd(b,ab)=gcd(akb)

gcd ⁡ ( a × b , c ) = gcd ⁡ ( a , c ) × gcd ⁡ ( b , c ) \gcd(a \times b,c) = \gcd(a ,c ) \times \gcd(b,c) gcd(a×b,c)=gcd(a,c)×gcd(b,c)

再考虑 F F F 数列的一个性质:

F n + 1 − F n = F n − 1 F_{n+1} - F_n = F_{n-1} Fn+1Fn=Fn1

下面先求另一个东西:

gcd ⁡ ( F n , F n + 1 ) = gcd ⁡ ( F n , F n + 1 − F n ) = gcd ⁡ ( F n − 1 , F n ) = ⋯ = gcd ⁡ ( F 1 , F 2 ) = 1 \gcd(F_n,F_{n+1}) = \gcd(F_n,F_{n+1}-F_n) = \gcd(F_{n-1},F_n) = \cdots = \gcd(F_1,F_2)=1 gcd(Fn,Fn+1)=gcd(Fn,Fn+1Fn)=gcd(Fn1,Fn)==

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值