首页 > 其他分享 >Luogu P1306 斐波那契数列公约数

Luogu P1306 斐波那契数列公约数

时间:2022-11-22 22:01:40浏览次数:46  
标签:Gcd Luogu 样例 斐波 leq P1306 公约数 那契

斐波那契公约数

题目描述

对于 Fibonacci 数列:

\[ f_i = \begin{cases} [i = 1] & i \leq 1 \\ f_{i - 1} + f_{i - 2} & i \gt 1 \end{cases}\]

请求出 \(f_n\) 与 \(f_m\) 的最大公约数,即 \(\gcd(f_n, f_m)\)。

输入格式

一行两个正整数 \(n\) 和 \(m\) 。

输出格式

输出一行一个整数,代表 \(f_n\) 和 \(f_m\) 的最大公约数。答案请对 \(10^8\) 取模。

样例 #1

样例输入 #1

4 7

样例输出 #1

1

提示

数据规模与约定

  • 对于 \(100\%\) 的数据,保证 \(1 \leq n, m \leq 10^9\)。

不妨令 n < m

\[f[n+2] = f[n] + f[n+1]; \]

\[f[n+3] = f[n+1] + f[n+2] = 2 * f[n+1] + f[n]; \]

\[f[n+4] = f[n+2] + f[n+3] = 2 * f[n+2] + f[n+1] = 3 * f[n+1] + 2 * f[n] \]

\[f[n+5] = 5 * f[n+1] + 3 * f[n] \]

发现如下规律

\[f[n+t] = f[t] * f[n+1] + f[t-1] * f[n] \]

将m代进去就有

\[f[m] = f[m-n] * f[n+1] + f[n-m-1] * f[n] \]

那么要求的就是\(Gcd(f[n] , f[m]) = Gcd(f[n] , f[m-n]*f[n+1] + f[n-m-1] * f[n])\)

然后由于\(f[n] \ \ | \ \ f[n-m-1] * f[n]\)

\(Gcd(f[n] , f[m]) = Gcd(f[n] , f[m-n]*f[n+1])\)

再因为\(Gcd(f[n] , f[n+1]) = 1\)

所以\(Gcd(f[n] , f[m]) = Gcd(f[n] , f[m-n])\)

发现n,m和求解\(Gcd(n,m)\)的辗转相除法一样,所以\(Gcd(f[n] , f[m]) = f[Gcd(n,m)]\)

关于\(Gcd(f[n] , f[n+1]) = 1\)的证明

\[Gcd(f[n] , f[n+1]) = Gcd(f[n] , f[n] + f[n-1]) \]

\[Gcd(f[n] , f[n+1]) = Gcd(f[n-1] , f[n]) \]

以此类推

\[Gcd(f[n] , f[n+1]) = Gcd(f[1] , f[2]) = 1 \]

代码只需用矩阵优化一下递推即可,略。

标签:Gcd,Luogu,样例,斐波,leq,P1306,公约数,那契
From: https://www.cnblogs.com/R-Q-R-Q/p/16916622.html

相关文章

  • Luogu2046 海拔 - 网络流 - 最短路 -
    题目链接:https://www.luogu.com.cn/problem/P2046首先观察可以发现最优解一定是左上部分是全0,右下是全1这样的形式然后题目就相当于让我们求一个\((1,1)\rightarrow(n......
  • Luogu7093
    题意:给你一个双端队列,同时有一个长度为\(n\)的序列\(a\),满足序列中的元素均为\(2\)的非负整数幂。从前到后遍历这个序列,对于一个\(a_i\)你可以将它放入双端队列的......
  • Luogu P3286 [SCOI2014]方伯伯的商场之旅
    题意方伯伯有一天去参加一个商场举办的游戏。商场派了一些工作人员排成一行。每个人面前有几堆石子。说来也巧,位置在\(i\)的人面前的第\(j\)堆的石子的数量,刚好是\(......
  • 关于斐波那契数列通项
    1.生成函数对于任意数列\(\{a_n\}\),函数\[f(x)=\sum_{n=0}^\inftya_nx^n\]称为数列\(\{a_n\}\)的普通型生成函数生成函数中的\(x\)并无实际意义,一般不用考虑是否收......
  • 数组求解斐波那契数列
    #include<stdio.h>intmain(){ inti; intf[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0)printf("\n"); printf("%......
  • luogu P7201 [COCI2019-2020#1] Džumbus题解
    须知本题解骨架是本人由官方题解翻译得来的,并补充了一些不详细的地方,修改了一些错误,自己写了每一个子任务的代码(因为官方题解代码和文本不太匹配)。基本信息任务名:Džumb......
  • LUOGU P1363 幻象迷宫
    题干就用这个题来思路开阔一下吧这个题解的hack数据解释的很好,思路解释也不错这个题解的代码写的不错我是第一个题解的第二个错误思路,然后T了9个点,开$O_2$MLE,冲了好几......
  • luoguP1269 信号放大器
    神奇的题目想了3个做法假·贪心、真·DP、真·贪心全部交上去分别获得40、90、100的好成绩蚌埠住了1.假·贪心考虑从孩子节点开始一直到指定的根节点u到中途某个节......
  • 【LuoguP5163】WD与地图
    【LuoguP5163】WD与地图Description有一个\(n\)个点\(m\)条边的有向图每个点有点权\(a_i\)维护三种操作:1.删去\(a\)到\(b\)的边2.\(a_i\)加上\(b\)3.查询\(a\)所在......
  • AcWing 205. 斐波那契
    \(AcWing\)\(205\).斐波那契​​题目传送门​​一、题目描述在斐波那契数列中,\(F_ib_0=0,F_ib_1=1,F_ib_n=F_ib_{n−1}+F_ib_{n−2}(n>1)\)。给定整数\(n\),求\(F_ib_n~......