BZOJ5118 Fib数列2(矩阵快速幂)
特殊矩阵的幂同样满足费马小定理。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define int long long
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
const int P=1125899839733759ll;
int T,n;
int ksc(int a,int b,int p)
{
int t=a*b-(int)((long double)a*b/p+0.5)*p;
return t<?t+p:t;
}
int ksm(int a,int k,int p)
{
int s=;
for (;k;k>>=,a=ksc(a,a,p)) if (k&) s=ksc(s,a,p);
return s;
}
struct matrix
{
int n,a[][];
matrix operator *(const matrix&b) const
{
matrix c;c.n=n;memset(c.a,,sizeof(c.a));
for (int i=;i<n;i++)
for (int j=;j<;j++)
for (int k=;k<;k++)
c.a[i][j]=(c.a[i][j]+ksc(a[i][k],b.a[k][j],P))%P;
return c;
}
}f,a;
signed main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj5118.in","r",stdin);
freopen("bzoj5118.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
T=read();
while (T--)
{
n=ksm(,read(),P-);
f.n=;f.a[][]=,f.a[][]=;
a.n=;a.a[][]=,a.a[][]=a.a[][]=a.a[][]=;
for (;n;n>>=,a=a*a) if (n&) f=f*a;
cout<<f.a[][]<<endl;
}
return ;
}
BZOJ5118 Fib数列2(矩阵快速幂)的更多相关文章
- HDU 4549 M斐波那契数列(矩阵快速幂)
		题目链接:M斐波那契数列 题意:$F[0]=a,F[1]=b,F[n]=F[n-1]*F[n-2]$.给定$a,b,n$,求$F[n]$. 题解:暴力打表后发现$ F[n]=a^{fib(n-1)} ... 
- M斐波那契数列(矩阵快速幂+费马小定理)
		M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ... 
- HDU 4549 M斐波那契数列(矩阵快速幂+费马小定理)
		M斐波那契数列 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submi ... 
- NowCoder数列(矩阵快速幂变式)
		时间限制 3000 ms 内存限制 32768 KB 代码长度限制 100 KB 题目描述 NowCoder最近在研究一个数列: * F(0) = 7 * F(1) = 11 * F(n) = F(n ... 
- 洛谷P1349 广义斐波那契数列(矩阵快速幂)
		P1349 广义斐波那契数列 https://www.luogu.org/problemnew/show/P1349 题目描述 广义的斐波那契数列是指形如an=p*an-1+q*an-2的数列.今给定 ... 
- 算法设计与分析 1.2 不一样的fibonacci数列 (矩阵快速幂思想)
		题目描述 Winder 最近在学习 fibonacci 数列的相关知识.我们都知道 fibonacci 数列的递推公式是F(n) = F(n - 1) + F(n - 2)(n >= 2 且 n ... 
- P1962 斐波那契数列 【矩阵快速幂】
		一.题目 P1962 斐波那契数列 二.分析 比较基础的递推式转换为矩阵递推,这里因为$n$会超出$int$类型,所以需要用矩阵快速幂加快递推. 三.AC代码 1 #include <bits/ ... 
- 【洛谷P1962 斐波那契数列】矩阵快速幂+数学推导
		来提供两个正确的做法: 斐波那契数列双倍项的做法(附加证明) 矩阵快速幂 一.双倍项做法 在偶然之中,在百度中翻到了有关于斐波那契数列的词条(传送门),那么我们可以发现一个这个规律$ \frac{F_ ... 
- 洛谷P1939【模板】矩阵加速(数列)+矩阵快速幂
		思路: 这个 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 可以想成: [a(n) ] [1 0 1] [a(n-1) ] [a(n-1) ] = ... 
- 洛谷P1962 斐波那契数列 (矩阵快速幂)
		学了矩阵,练一下手... 1 #include<bits/stdc++.h> 2 typedef long long ll; 3 const ll mod=1e9+7; 4 using n ... 
随机推荐
- java两年工作经验有什么经验
			这两年里,了解了完整项目的开发过程,知道如何快速入手一个完全没接触过的项目:譬如先了解数据库关系后,马上熟悉一个功能从前端到后端的实现过程,自己再写一个功 能,这样子就能马上上手开发项目,之后在慢慢了 ... 
- Unity扩展编辑器一
			将Test1脚本挂在摄像机上  如图展示  下面我们需要在代码中动态的编辑它,请在你的Project视图中创建一个Editor文件夹,把MyEditor放进Editor文件夹中  在OnInsp ... 
- mysql innodb 从 ibd 文件恢复表数据
			最近内部的 mysql 数据库发生了一件奇怪的事,其中有一个表 users625 突然出现问题, 所有对它的操作都报错误 数据表不存在. mysql> select count(*) from ... 
- docker中创建MySQL及在外部使用Navicat连接
			1:获取MySQL镜像 运行 docker pull mysql [root@MyCentos7- ~]# docker pull mysql Using default tag: latest la ... 
- Java中的==符号与equals()的使用(测试两个变量是否相等)
			Java 程序中测试两个变量是否相等有两种方式:一种是利用 == 运算符,另一种是利用equals()方法. 当使用 == 来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定 ... 
- Swagger本地环境配置
			一.技术背景 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远.而前后端的唯一联系便是 API 接口,与此同 ... 
- python所遇到的坑
			我是在ubuntu中,自带的有python2,python3有安装了anaconda套件,所以python的版本很多,曾经想删除过不用的python. 先执行 sudo apt remove pyth ... 
- Daily Scrum (2015/11/4)
			因为距离部署的时间临近,而之前我们的进度偏慢.这天晚上我们大多数成员几乎所有时间都用在了这个项目上,成果还算令人满意. 成员 今日任务 时间 明日任务 符美潇 1.修复了一个BUG,此BUG会导致所爬 ... 
- 20172321 20172333 2017-2018 暑假作业APP
			20172321 20172333 2017-2018 暑假作业APP 项目介绍 项目成员 吴恒佚 20172321 严域俊 20172333 项目简介 从理论上来说,这是一个贪吃蛇游戏. <贪 ... 
- object-oriented second work
			work request github enter 这次作业做过,不过以前是用数组写的,当我用双向链表写这题时,刚交上去一直出错,后面我又改了改,最后一点一致凑,后面有同学告诉我在构建链表后要判断链表 ... 
