[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的 ...
随机推荐
- 完美解决gradle下载慢的问题
修改项目根目录下的文件 build.gradle ,使用国内阿里云镜像仓库地址. buildscript { repositories { maven{ url 'http://maven.aliyu ...
- Windows Phone MultiBinding :Cimbalino Toolkit
在WPF和WIN8中是支持MultiBinding 这个有啥用呢,引用下MSDN的例子http://msdn.microsoft.com/en-us/library/system.windows.da ...
- javascript获取时间戳
时间戳: 时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp). JavaScript 获取当前时间戳: < ...
- LeetCode高频148错题记录
3. Max Points on a Line 共线点个数3种解法 思路一:思考如何确定一条直线,两点法,确定斜率后带入一点.有三种情况,1. 两点重合,2. 斜率不存在,3. 正常算,依次以每个点为 ...
- alpha冲刺9/10
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之9 团队部分 后敬甲(组长) 过去两天完成了哪些任务 答辩准备中 和大佬们跟进进度 接下来的计划 准备答辩 ...
- alpha冲刺4/10
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺4 团队部分 后敬甲 过去两天完成了哪些任务 文字描述 主页部分图标的替换 -拍照按钮的设计和测试 GitHub代码 ...
- python全栈开发day74-普通验证码和滑块验证码
一.昨日内容回顾 django认证系统 1. 默认auth_user ``` # 创建用户 from django.contrib.auth.models import User User.objec ...
- net core体系-1概要
.net core最近园子讨论频率很高的话题,从不久前发布正式版本后,也是开始从netcore官网一步一步走向学习之路:.net跨平台的设计让人很是兴奋起来,因为做了多年的互联网研发者,见识了很多一流 ...
- 51nod1967 路径定向 Fleury
题目传送门 题解 几乎是Fleury模板题. 一开始我们把图看作无向图,然后对于度为奇数的点增边,使得整个图的所有点都是偶数的. 然后跑一遍欧拉回路 Fleury ,所有的边就定向好了~ 代码 #in ...
- Servlet解决中文乱码问题
request.setCharacterEncoding("UTF-8"); 并且把这句话放在request.getParameter()之前