题目描述

斐波那契数列定义如下:
F(0) = 0 F(1) = 1
F(n) = F(n-1) + F(n-2)
给出n个正整数a1, a2,...... an,求对应的斐波那契数的最小公倍数,由于数字很大,输出Mod 1000000007的结果即可。
例如:1 3 6 9, 对应的斐波那契数为:1 2 8 34, 他们的最小公倍数为136。
题解
参考
我们都知道min-max容斥。
对于gcd和lcm的关系,我们也可以认为这是一个指数取交集和指数取并集的操作,所以有
然后关于斐波那契数有一个定理:
于是就有:

然后考虑神奇操作,我们设一个G函数。

然后原式就变成:

考虑枚举d:

然后对于指数上的东西,还有一个结论:

至于为什么是1,证明也是容斥。

因为每个元素都小于1e6,所以我们可以直接对每个元素算贡献了。

代码

#include<iostream>
#include<cstdio>
#define N 1000009
using namespace std;
typedef long long ll;
const int mod=1000000007;
ll g[N],a[N],ans=1,maxn;
bool vis[N];
int n;
inline int rd(){int x=0;char c=getchar();bool f=0;while(!isdigit(c)){if(c=='-')f=1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}return f?-x:x;
}
inline ll power(ll x,ll y){ll ans=1;while(y){if(y&1)ans=ans*x%mod;x=x*x%mod;y>>=1;}return ans;
}
int main(){n=rd();for(int i=1;i<=n;++i)a[i]=rd(),maxn=max(maxn,a[i]),vis[a[i]]=1;g[1]=1;for(int i=2;i<=maxn;++i)g[i]=(g[i-1]+g[i-2])%mod;for(int i=1;i<=maxn;++i){ll ni=power(g[i],mod-2);for(int j=i*2;j<=maxn;j+=i)g[j]=g[j]*ni%mod;}for(int i=1;i<=maxn;++i){bool tag=0;for(int j=i;j<=maxn;j+=i)if(vis[j]){tag=1;break;}if(tag)ans=ans*g[i]%mod;}cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/ZH-comld/p/10427669.html

51nod1355 斐波那契的最小公倍数相关推荐

  1. [数论 斐波那契] 51nod1355. 斐波那契的最小公倍数

    进入斐波那契领域的第一题- 不要脸地截图了Manchery的博客--原文在这里 #include <cstdio> #include <iostream> #include & ...

  2. [51nod1355]斐波那契的最小公倍数

    $\text{lcm}$不好处理,考虑转为$\gcd$,主要是因为$(f_n,f_m)=f_{(n,m)}$ $\text{lcm}$的本质是指数取$\max$,$\gcd$的本质是指数取$\min$ ...

  3. 1355 斐波那契的最小公倍数

    1355 斐波那契的最小公倍数 原题连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1355 之前看唐老师题解学习 ...

  4. 51nod1355:斐波那契的最小公倍数(数论)

    题面 题意给出n个a,问LCM{ f(a) },f为斐波那契数. 知乎靠谱的题解 记住这两个路人性质就好 ①容斥求LCM lcm{S}=∏T⊆S,T≠∅gcd{T}(−1)|T|+1lcm{S}=∏T ...

  5. 51nod 1355 斐波那契的最小公倍数

    Upd2019.4.19 yy了一个新的做法 新的写法 之前的东西 链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1355 很神 ...

  6. 求水仙花数 以及 最大公约数最小公倍数 以及 冒泡法 以及字母大小写的转换 以及简单选择排序法 以及斐波那契数列

    什么是水仙花数呢? 假设一个数ABC是一个三位数. 水仙花数就是 A*A*A +B*B*B +C*C*C = ABC; 水仙花的具体代码. 接着是最大公约数以及最小公倍数 如果两个数是ab,最大公约数 ...

  7. python斐波那契数列30_python的30个骚操作

    1.冒泡排序 2.计算x的n次方的方法 3.计算a*a + b*b + c*c + -- 4.计算阶乘 n! 5.列出当前目录下的所有文件和目录名 6.把一个list中所有的字符串变成小写: 7.输出 ...

  8. 51Nod-1355-斐波那契的最小公倍数

    ACM模版 描述 题解 找到一个不错的知乎链接,对这个问题有详细的回答,可以仔细看看 张一钊 大佬的讲解. <怎样求出K个斐波那契数的最小公倍数?> 很详细的讲解,Orz~~~除了膜拜,我 ...

  9. 大数斐波那契数列+取余

    斐波那契序列 集锦 (转) [定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质 其实,结合"互质"的定义,和一个 ...

  10. 斐波那契数列谈矩阵(1)

    斐波那契序列 集锦 (转) [定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质 其实,结合"互质"的定义,和一个 ...

最新文章

  1. ubuntu 14.04 下通过apt-get 安装jdk
  2. 深入Linux内核网络堆栈
  3. Python 生成账号密码算法
  4. Python标准库参考-sched
  5. mysql重启,全网独家首发!
  6. ubuntu安装python
  7. Express4.x API (一):application (译)
  8. 【交叉/综合/新兴】 2019年-中国计算机学会推荐国际学术会议和期刊目录(十)
  9. abb机器人伺服电机报闸是什么_ABB机器人伺服电机进油的分析及解决措施
  10. 计算机word表格ppt,计算机应用基础-04-WORD表格.ppt
  11. 数据库 - 数据字典及其使用
  12. 人工智能的味道 - 图像风格迁移 by Python
  13. 搞技术的人生技巧——装贪财
  14. 百度C++工程师的那些极限优化(内存篇)
  15. 红警2020版笔记本芯片级维修教材(含军工级)
  16. PET——文本分类的又一种妙解
  17. 树莓派——8、树莓派博通BCM2835芯片手册导读
  18. C#课程设计(购物平台)
  19. 电大2020春计算机形考作业,成教作业网提供国开电大2020年 建筑构造 形考任务1-4答案...
  20. 最有效的一种技术领导是“以身作则”

热门文章

  1. c++的准备知识18
  2. 【转】并查集算法和路径压缩
  3. 8-ORACLE四种关闭方式
  4. Javascript设计网页中的下拉菜单
  5. GIS-python学习
  6. 大会预告 | 第一届中国情感计算大会
  7. 【CV学习笔记】色彩空间
  8. 谁是杨强?首位AAAI华人主席,身兼5大顶级组织Fellow,也是华为诺亚方舟实验室开创者...
  9. 每日算法系列【LeetCode 329】矩阵中的最长递增路径
  10. [ACL18]基于Self-Attentive的成分句法分析