https://www.luogu.org/problem/show?pid=1962

题目背景

大家都知道,斐波那契数列是满足如下性质的一个数列:

• f(1) = 1

• f(2) = 1

• f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数)

题目描述

请你求出 f(n) mod 1000000007 的值。

输入输出格式

输入格式:

·第 1 行:一个整数 n

输出格式:

第 1 行: f(n) mod 1000000007 的值

输入输出样例

输入样例#1:

5
输出样例#1:

5
输入样例#2:

10
输出样例#2:

55

说明

对于 60% 的数据: n ≤ 92

对于 100% 的数据: n在long long(INT64)范围内。

矩阵乘法优化。、

 #include <cstdio>

 #define LL long long
const LL mod(); inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} LL n,m;
struct Matrix_fb {
LL e[][];
void init_base()
{
e[][]=;
e[][]=;
e[][]=;
e[][]=;
}
void init_ans()
{
e[][]=e[][]=;
}
Matrix_fb operator * (Matrix_fb x) const
{
Matrix_fb tmp;
for(int i=; i<; ++i)
for(int j=; j<; ++j)
{
tmp.e[i][j]=;
for(int k=; k<; ++k)
tmp.e[i][j]+=e[i][k]*x.e[k][j],tmp.e[i][j]%=mod;
}
return tmp;
}
}ans,base; int AC()
{
// freopen("spfa.in","r",stdin);
// freopen("spfa.out","w",stdout);
read(n);
if(n==||n==) { puts(""); return ; }
ans.init_ans(); base.init_base();
for( n-=; n; n>>=,base=base*base)
if(n&) ans=ans*base;
printf("%lld\n",ans.e[][]);
return ;
} int Aptal=AC();
int main(){;}

单位矩阵 在第一行

 #include <cstdio>

 #define LL long long
const LL mod(); inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} LL n,m;
struct Matrix_fb {
LL e[][];
void init_base()
{
e[][]=;
e[][]=;
e[][]=;
e[][]=;
}
void init_ans()
{
e[][]=e[][]=;
}
Matrix_fb operator * (Matrix_fb x) const
{
Matrix_fb tmp;
for(int i=; i<; ++i)
for(int j=; j<; ++j)
{
tmp.e[i][j]=;
for(int k=; k<; ++k)
tmp.e[i][j]+=e[i][k]*x.e[k][j],tmp.e[i][j]%=mod;
}
return tmp;
}
}ans,base; LL GCD(LL a,LL b)
{
return !b ? a : GCD(b,a%b);
} int AC()
{
// freopen("spfa.in","r",stdin);
// freopen("spfa.out","w",stdout);gcd-=2
read(n);
if(n==||n==) { puts(""); return ; }
ans.init_ans(); base.init_base();
for( ; n; n>>=,base=base*base)
if(n&) ans=ans*base;
printf("%lld\n",ans.e[][]);
return ;
} int Aptal=AC();
int main(){;}

单位矩阵,在对角线

洛谷—— P1962 斐波那契数列的更多相关文章

  1. 洛谷P1962 斐波那契数列【矩阵运算】

    洛谷P1962 斐波那契数列[矩阵运算] 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) ( ...

  2. 洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]

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

  3. 洛谷——P1962 斐波那契数列

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

  4. 洛谷P1962 斐波那契数列(矩阵快速幂)

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

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

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

  6. 【洛谷P1962 斐波那契数列】矩阵快速幂+数学推导

    来提供两个正确的做法: 斐波那契数列双倍项的做法(附加证明) 矩阵快速幂 一.双倍项做法 在偶然之中,在百度中翻到了有关于斐波那契数列的词条(传送门),那么我们可以发现一个这个规律$ \frac{F_ ...

  7. 洛谷 P1962 斐波那契数列

    题目链接:https://www.luogu.org/problemnew/show/P1962 题目大意: 略 分析: 由于数据规模很大,需要用矩阵快速幂来解. 代码如下: #pragma GCC ...

  8. 题解——洛谷P1962 斐波那契数列(矩阵乘法)

    矩阵乘法加速线性递推的典型 大概套路就是先构造一个矩阵\( F \)使得另一初始矩阵\( A \)乘以\( F^{x} \)能够得出第n项 跑的飞快 虽然我也不知道那个矩阵要怎么构造 或许就像我使用了 ...

  9. 洛谷P1962 斐波那契数列

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

随机推荐

  1. wireshark解析rtp协议,流媒体中的AMR/H263/H264包的方法

    抓到完整的流媒体包之后,用wireshark打开,其中的包可能不会自动映射成RTP+AMR/H263/H264的包,做如下修改操作即可:1.  把UDP 包解析成RTP/RTCP包.选中UDP包,右键 ...

  2. WingIDE4.1 破解及支持中文设置

    1.下面提供最新版本的破解方法. 先到http://wingware.com/downloads/wingide下载最新版本的IDE. 安装之前,先修改时间到一个月前. 安装 安装之后然后获取试用版的 ...

  3. React-Native 踩坑过程

    踩坑过程: 解决方法就是去 SDK Manager 把 23.0.1 的版本下载了 而如果报错信息中含有bintray.com.gradle.org等网址,请***,反复重试,或者去react nat ...

  4. LocalDateTime查找最近的五分钟点

    /** * 最近的五分钟 * @param dateTime * @return */ public static LocalDateTime getNear5(LocalDateTime dateT ...

  5. 如何对HTMLTestRunner 进行输出print 进行修改

    在 HTMLTestRunner 模块中,在运行代码后,在输入的html页面值出现了特别简单的一个页面,那么现在如何将HTML页面中输出的更多print 在 HTMLTestRunner.py文件中查 ...

  6. 企业级分布式监控系统--zabbix

    目录 1.Zabbix简介 2.zabbix安装 3.工作原理 4.监控功能 5.监控系统架构 6.Zabbix系统架构 7.Zabbix组件构成 8.zabbix监控环境中基本概念 正文 回到顶部 ...

  7. Jenkins自动化部署.netcore程序

    一.安装jenkins 百度一下 二.构建前的准备 搭建好.net core2.0的环境,下载:https://aka.ms/dotnetcore-2-windowshosting  (,net co ...

  8. Nmap linux端口扫描神器

    #简介 Nmap亦称为Network Mapper(网络映射)是一个开源并且通用的用于Linux系统/网络管理员的工具.nmap用于探查网络.执行安全扫描.网络核查并且在远程机器上找出开放端口.它可以 ...

  9. windows和linux无法访问VMware中linux的tomcat主页问题

    1.一定确定自己的tomcat服务器是启动的.(为了确保保险可以在测试前重新shutdown,startup一次) 2.确定自己访问的ip地址和端口号是正确的 如果是VMware外部windows的话 ...

  10. ie8及其以下版本兼容性问题之圆角

    解决办法:在http://css3pie.com/页面下载一个PIE.htc的文件,加载到根目录下,然后在css中加上一句behavior:url(../js/PIE.htc);如下: .border ...