[P1306] 斐波那契公约数 (矩阵快速幂+斐波那契数列)
一开始数据没加强,一个简单的程序可以拿过
gcd(f[n],f[m])=f[gcd(n,m)]
下面这个是加强数据之后的80分代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
int main()
{
ll n,m,a=,b=,c=;cin>>n>>m;
for(ll i=;i<gcd(n,m);i++)
{
c=(a+b)%;
a=b;
b=c;//cout<<c%100000000<<endl;
}
cout<<c%;
return ;
}//1 1 2 3 5
最后一个点TLE,吸氧了之后还是过不了
因此是算法的问题
我这个蒟蒻不会优化,于是看了题解
题解给的是矩阵的优化
蒟蒻并不会这个算法
下面是神仙程序
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ymw 100000000
using namespace std;long long n,m;
struct node{long long a[][],r,c;};
inline node mul(node x,node y)//x*y的结果返回给z
{
node z;
memset(&z,,sizeof(z));
for(register int i=;i<x.r;i++)
for(register int j=;j<y.c;j++)
for(register int k=;k<x.c;k++)
z.a[i][j]=(z.a[i][j]+x.a[i][k]*y.a[k][j])%ymw;
z.r=x.r;z.c=y.c;
return z;
}
inline long long ksm(long long y)//快速幂加速递推
{
node x,ans;
memset(&x,,sizeof(x));
memset(&ans,,sizeof(ans));
x.r=x.c=ans.c=;
ans.r=;
x.a[][]=x.a[][]=x.a[][]=;
ans.a[][]=ans.a[][]=;
while(y)
{
if(y&) ans=mul(ans,x);
x=mul(x,x);
y>>=;
}
return ans.a[][];
}
signed main()
{
scanf("%lld%lld",&n,&m);
n=__gcd(n,m);//计算
if(n<) return putchar()&;//特判
printf("%lld",ksm(n-));//输出
}
[P1306] 斐波那契公约数 (矩阵快速幂+斐波那契数列)的更多相关文章
- 洛谷- P1306 斐波那契公约数 - 矩阵快速幂 斐波那契性质
P1306 斐波那契公约数:https://www.luogu.org/problemnew/show/P1306 这道题目就是求第n项和第m项的斐波那契数字,然后让这两个数求GCD,输出答案的后8位 ...
- POJ 3070(求斐波那契数 矩阵快速幂)
题意就是求第 n 个斐波那契数. 由于时间和内存限制,显然不能直接暴力解或者打表,想到用矩阵快速幂的做法. 代码如下: #include <cstdio> using namespace ...
- hdu 4549 M斐波拉契 (矩阵快速幂 + 费马小定理)
Problem DescriptionM斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在 ...
- POJ 3070 Fibonacci矩阵快速幂 --斐波那契
题意: 求出斐波那契数列的第n项的后四位数字 思路:f[n]=f[n-1]+f[n-2]递推可得二阶行列式,求第n项则是这个矩阵的n次幂,所以有矩阵快速幂模板,二阶行列式相乘, sum[ i ] [ ...
- 数论+矩阵快速幂|斐波那契|2014年蓝桥杯A组9-fishers
标题:斐波那契 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 n 和 ...
- poj3070 (斐波那契,矩阵快速幂)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9630 Accepted: 6839 Descrip ...
- UVA10689 Yet another Number Sequence —— 斐波那契、矩阵快速幂
题目链接:https://vjudge.net/problem/UVA-10689 题解: 代码如下: #include <iostream> #include <cstdio> ...
- codeforce 227E 矩阵快速幂求斐波那契+N个连续数求最大公约数+斐波那契数列的性质
E. Anniversary time limit per test2 seconds memory limit per test256 megabytes inputstandard input o ...
- HDU6395(分段+矩阵快速幂)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6395 给你一个式子,给出你A,B,C,D,P,n,让你求出第n项的式子Fn.(其中ABCDPn均在1e9的 ...
随机推荐
- docker 给none镜像打镜像
1.遇到none的镜像打tag方式: docker tag + docker ID + 命名:版本名 案例:docker tag 41b7307026c0 gitlab:test 这就 ...
- Python杂写1
一:编程及编程语言介绍 编程的目的:人把自己的思想流程表达出来,让计算机按照这种思想去做事,把人给解放出来. 编程语言:简单的说就是一种语言,是人和计算机沟通的语言. 编程:例如Python,利用Py ...
- 首次使用idea步骤
修改代码提示快捷键 默认是ctrl+空格,这个会跟中英文切换的快捷键冲突. 我这里改成了alt+/ tomcat的配置
- jquery实现全选 反选 取消
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- win10ssh连接ubuntu服务器并本地绘图
update @ 2018-11-07 00:36:38 用xrdp+tigervnc等的组合,可以使用原生unity桌面.具体教程见ubuntu日常使用指南 工具准备 win10上: xshell, ...
- 二叉查找树及B-树、B+树、B*树变体
动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ), 都是典型的 ...
- python全栈开发day53-mysql
mysql的使用 (1)下载 解压到指定的目录. (2)取到C:\mysql-5.7.22-winx64\mysql-5.7.22-winx64\bin路径 添加到系统的环境变量中,后面一定要加分号. ...
- Coolpy网络部署说明(宽带互联网)
本文将介绍Coolpy第二种方案的网络部署方法.以方便大家学习如何让coolpy设备部署到相应的应用场景中.本例将以水星MW310R无线路由器作为演示路由器. 1.硬件连接部分: coolpy设备=& ...
- 2018牛客网暑假ACM多校训练赛(第四场)B Interval Revisited 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-B.html 题目传送门 - https://www.no ...
- 数据特征分析:1.基础分析概述& 分布分析
基础分析概述 几个基础分析思路: 分布分析 对比分析 统计分析 帕累托分析 正态性检测 相关性分析 分布分析 分布分析是研究数据的分布特征和分布类型,分定量数据.定性数据区分基本统计量. import ...