[P1349]广义斐波那契数列
来源:互联网 发布:柯洁评论黑嘉嘉 知乎 编辑:程序博客网 时间:2024/06/16 05:01
原题链接
总之
就是用矩阵
来个快速幂加速一下
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#include<queue>#include<vector>#include<climits>#include<string>#include<cstdlib>#include<ctime>#define LL long long#define MOD 1000000007using namespace std;struct nico{ LL p[5][5];}d,ans,yumi;LL p,q,a1,a2,n,m;nico operator * (nico a,nico b){ int i,j,k; nico c; memset(c.p,0,sizeof(c.p)); for(i=1;i<=2;i++) for(j=1;j<=2;j++) for(k=1;k<=2;k++) c.p[i][j]+=(a.p[i][k]*b.p[k][j])%m; return c;}nico fastpow(nico pika,LL x){ while(x!=1) { if(x%2==1) yumi=yumi*pika; x=x>>1; pika=pika*pika; } return yumi*pika;}int main(){ int i; scanf("%lld%lld%lld%lld%lld%lld",&p,&q,&a1,&a2,&n,&m); if(n==1) { printf("%lld",a1%m); return 0; } if(n==2) { printf("%lld",a2%m); return 0; } for(i=1;i<=2;i++) yumi.p[i][i]=1; d.p[1][1]=p; d.p[2][1]=q; d.p[1][2]=1; d.p[2][2]=0; nico mid=fastpow(d,n-2); ans.p[1][1]=a2; ans.p[1][2]=a1; LL kkk=ans.p[1][1]*mid.p[1][1]+ans.p[1][2]*mid.p[2][1]; printf("%lld",kkk%m); return 0;}
阅读全文
0 0
- P1349 广义斐波那契数列
- P1349 广义斐波那契数列
- [P1349]广义斐波那契数列
- P1349 广义斐波那契数列(矩阵的应用)
- 【u021】广义斐波那契数列
- 洛谷1349 广义斐波那契数列 【矩阵乘法】
- Codevs 1574 广义斐波那契数列(矩阵乘法)
- 【矩阵乘法】广义斐波那契数列
- 【洛谷1349】广义斐波那契数列
- 1005 Number Sequence(广义斐波那契数列)
- 斐波那契数列数列计算
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 【POJ3252】 Round Numbers
- Accurate Single Stage Detector Using Recurrent Rolling Convolution
- UVA-10881 Piotr's Ants
- 微信开发——3、微信接入(javaweb)
- SQL查询效率:100w数据查询只需要1秒钟
- [P1349]广义斐波那契数列
- 一起写atom插件(1)——写个简单的插件
- 1062: 最大公约数
- Ubuntu 14.04 coturn 安装 与 配置
- 纪念一下装了一天终于成功了的 pygraphviz
- Ambari-2.2.2.0文档翻译--准备工作(3)
- hdu6127-!!多校7&极角排序&问题转化-Hard challenge
- Java 8 默认方法和多继承
- Cocos2dx-3.1.x中探究Action的子类