P1306 斐波那契公约数

题目描述

对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少?

输入输出格式

输入格式:

两个正整数n和m。(n,m<=10^9)

注意:数据很大

输出格式:

Fn和Fm的最大公约数。

由于看了大数字就头晕,所以只要输出最后的8位数字就可以了。

输入输出样例

输入样例#1:

4 7

输出样例#1:

1

说明

用递归&递推会超时

用通项公式也会超时

/*首先,斐波那契数列相邻项的gcd=1。假设不为1的话,可以推出之前所有相邻项gcd均不为1,但gcd(f(1),f(2))=gcd(1,1)=1,矛盾,所以相邻项gcd=1。然后,不妨设n<m,设第f(n)与f(n+1)为a,b,则有:x f(x)0 0 1 1 2 1 3 2 ... (n)a,(n+1)b(n+2)a+b(n+3)a+2b(n+4)2a+3b...(m)f(m-n-1)a+f(m-n)b根据gcd(m,n)=gcd(n,m%n),则gcd(f(m),f(n))=gcd(f(n),f(m)%f(n))=gcd(a,f(m-n)b)因为a和b是相邻项,gcd=1,所以_原式_=gcd(f(n),f(m-n))递归带入,得到_原式_=gcd(f(n),f(m%n))这就是gcd辗转相除的形式,所以可以得到gcd(f(m),f(n))=f(gcd(m,n))问题解决只需要先用O(logn)时间求gcd(m,n),再求f(gcd(m,n))
*/
#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,a[1000000];
int gcd(int x,int y){if(y==0)return x;else return gcd(y,x%y);
}
int main(){scanf("%d%d",&n,&m);int p=gcd(n,m);a[1]=1;a[2]=1;for(int i=3;i<=p;i++)a[i]=(a[i-1]+a[i-2])%100000000;printf("%d",a[p]);return 0;
}

转载于:https://www.cnblogs.com/thmyl/p/7467855.html

洛谷P1306 斐波那契公约数相关推荐

  1. 洛谷 P1306 斐波那契公约数

    题意简述 求斐波那契数列第n项和第m项的最大公约数 题解思路 设斐波那契数列第x项为F[x] 则有结论\(Gcd(F[n], F[m]) = F[Gcd(n, m)]\) ============== ...

  2. 洛谷——P2626 斐波那契数列(升级版)矩阵

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...

  3. 洛谷P1962 斐波那契数列题解

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...

  4. 洛谷 P3404 斐波那契(线段树)

    传送门 首先肯定是线段树,然后问题就是怎么打标记. 观察题目,可以发现,修改操作其实就是给一段区间加上从1到r-l+1的斐波那契数列. 那么思路就是:预处理斐波那契数列前缀和,这样可以O(1)查询斐波 ...

  5. 洛谷P1962 斐波那契数列

    传送门 不难得到状态转移矩阵 然后带进去乱搞 1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include&l ...

  6. 4.21每日一题之终于结束的起点(洛谷c++)|斐波那契数列

  7. 斐波那契公约数的相关证明

    \(\text{来一波斐波那契公约数的证明}QwQ\) \(\text{已知} \{F_n\} \text{为斐波那契数列,求证:}\) \[\forall\ n,m\in\text{Z}^{+},( ...

  8. 【小组专题三:斐波那契专题】斐波那契 与其20个性质 | 泽肯朵夫表示 | 卢卡斯数 与其8个性质 | 常系数二次线性齐次序列 | 模板与例题

    斐波那契专题 斐波那契序列的定义 斐波那契序列的基本性质 卢卡斯数 卢卡斯数的基本性质 正整数的泽肯朵夫(Zeckendorf)表示 其他斐波那契的性质 常系数的二次线性齐次递归关系 斐波那契进制/斐 ...

  9. 烦神的斐波那契洛谷-1306-斐波那契公约数

    传送门 洛谷1306传送门 -------------------------------------------------------------------------------------- ...

  10. 斐波那契数列升级版(洛谷P2626题题解,C++语言描述)

    题目要求 题目链接 分析 首先是求斐波那契数列,这东西我就不说了,能看到这篇题解的你肯定会. 为什么要用数组呢?为了记忆化,防止重复算. 当然,由于本题是单查询,所以不必记忆化,但记忆化对多查询真的会 ...

最新文章

  1. [20161107]关于数据文件位图区.txt
  2. Git清除本地账号密码/保存账号密码
  3. python爬虫去哪儿网_大型爬虫案例:爬取去哪儿网
  4. 对象的多态(核心、困难、重点)
  5. 栈和队列之仅用递归函数和栈操作逆序一个栈
  6. Sublime删除所有包含特定值的行
  7. 02.1-元素定位(find)
  8. org.springframework.data.redis.serializer.SerializationException: Cannot serialize;
  9. Redis 发布订阅,小功能大用处,真没那么废材!
  10. oppo面经-java开发
  11. 用inno 打包程序 学习之路(转载)
  12. 传感器原理及工程应用第4版
  13. iOS 微信授权登录
  14. mkv无损转换成mp4,方法步骤
  15. qps tps rps 区别
  16. 直流侧电力有源滤波器滤除谐波干扰的原理及方案
  17. 3年试点即将到期,电子印章将成网络货运新动力
  18. 9.7 方向导数与梯度
  19. antd 嵌套表格 没有子项隐藏图标
  20. react利用react-activation实现子路由缓存

热门文章

  1. 一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)
  2. Selenium之脚本编写页面通用定位方法
  3. Rsync结合Inotify 实时同步配置
  4. 如何为SUSE配置IP地址,网关和DNS
  5. 艾伟:用 C# 实现带键值的优先队列
  6. 学习MVC3(二)——创建自己的第一个网页:实现用户登陆(1)
  7. spring mvc Cotroller获取请求参数
  8. php用putty安装吗,为什么通过Putty的SSH命令与PHP的phpseclib不同?
  9. Luogu2774 方格取数问题
  10. ES6、7学习笔记(尚硅谷)-3-变量的解构赋值