hdu4565 so easy 矩阵
的确和题目描述一样,见过这个类型就so easy了
对于这个类型,首先化为二阶通项公式的类型,然后根据特征根反过来推递推方程就行
然而无脑的我还是调了一个晚上,就因为写乘法的时候忘记return了
然后就写了两个版本的,其实并没有多大不同
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define LL long long
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define down(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
LL inf;
#define N 2
struct matrix
{LL a[N][N];void clear(){fo(i,0,N-1)fo(j,0,N-1)a[i][j]=0;}matrix operator*(const matrix b){matrix anss;fo(i,0,N-1)fo(j,0,N-1){anss.a[i][j]=0;fo(k,0,N-1){anss.a[i][j]=(anss.a[i][j]+a[i][k]*b.a[k][j])%inf;anss.a[i][j]+=inf;anss.a[i][j]%=inf;}anss.a[i][j]+=inf;anss.a[i][j]%=inf;}return anss;}
};
matrix I=
{1,0,0,1
};
LL a,b,n;matrix KSM(matrix a,LL b)
{if(b==0)return I;if(b==1)return a;matrix ret=KSM(a,b/2);ret=ret*ret;if(b%2)ret=ret*a;return ret;
}int main()
{matrix A,anss;while(cin>>a>>b>>n>>inf){if(n==1){cout<<(2*a%inf)<<endl;continue;}A.clear();anss.clear();A.a[0][0]=2*a%inf;A.a[0][1]=((b%inf-a*a%inf)%inf+inf)%inf;A.a[1][0]=1;A.a[1][1]=0;anss=KSM(A,n-2);cout<<(((anss.a[0][0]%inf*2*(a*a%inf+b%inf)%inf+2*a%inf*anss.a[0][1]%inf)%inf+inf)%inf)<<endl;}return 0;
}
还有就是看起来精简好多的
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define LL long long
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define down(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
LL inf;
#define N 2
struct matrix
{LL a[N][N];void clear(){fo(i,0,N-1)fo(j,0,N-1)a[i][j]=0;}matrix operator*(const matrix b){matrix anss;fo(i,0,N-1)fo(j,0,N-1){anss.a[i][j]=0;fo(k,0,N-1){anss.a[i][j]=((anss.a[i][j]+a[i][k]*b.a[k][j])%inf+inf)%inf;}}return anss;}
};
matrix I=
{1,0,0,1
};
LL a,b,n;matrix KSM(matrix a,LL b)
{matrix ret=a,p=a;b--;while(b){if(b&1){ret=ret*p;b--;}p=p*p;b>>=1;}return ret;
}int main()
{matrix A,anss;while(cin>>a>>b>>n>>inf){if(n==1){cout<<(2*a%inf)<<endl;continue;}anss.clear();A.a[0][0]=2*a;A.a[0][1]=b-a*a;A.a[1][0]=1;A.a[1][1]=0;anss=KSM(A,n-1);
// cout<<anss.a[0][0]<<' '<<anss.a[0][1]<<endl;
// cout<<anss.a[1][0]<<' '<<anss.a[1][1]<<endl;LL ans=(anss.a[0][0]*2*a+anss.a[0][1]*2)%inf;ans+=inf;ans%=inf;cout<<ans<<endl;}return 0;
}
hdu4565 so easy 矩阵相关推荐
- HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 湘潭赛Easy wuxing(递推+矩阵快速幂or DP)
湘潭赛Easy wuxing(递推+矩阵快速幂or DP) 十分感谢老师的思路! 题目描述 "五行"是中国传统哲学思想,它认为认为大自然的现象由"木.火.土.金.水&qu ...
- HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
题目链接:点击查看 题意:给出a,b,m,n,求 解析:题意一目了然,此题的关键是推出解决问题的公式. 首先,题目要求括号内n次方后向上取整再模m,而这里给到的a与b的关系接下来也会用到:<b& ...
- hdu4565之矩阵快速幂
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDOJ How many ways?? 2157【矩阵高速幂】
How many ways? ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 构造类斐波那契数列矩阵(矩阵
题目:HDU4565 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 题意: 求 f(x) = ceil( (a +sqrt(b))^n ) ...
- 简述推荐系统中的矩阵分解
AI有道 一个有情怀的公众号 1 Linear Network Hypothesis 回顾一下,我们在机器学习基石课程的第一节课就提到过,机器学习的目的就是让机器从数据data中学习到某种能力skil ...
- 汉高澳大利亚matrix矩阵计算器
我在梦中的超级计算机超级计算机锯,使用大量阵列的cpu记忆,完成并行计算.一个手机制造商由于使用普通机械提供的服务,往往造成停机.是铁道部列车网络售票的事实. 无法使用云服务.上万台计算机并行处理,因 ...
- matlab矩阵按坐标取,在Matlab中获取inlier点的坐标(Get coordinates of inlier points in Matlab)...
在Matlab中获取inlier点的坐标(Get coordinates of inlier points in Matlab) 我需要找到使用impixel()在对象检测中获得的内部点的像素值. 我 ...
- 构造类斐波那契数列矩阵
题目:HDU4565 题意:给定正整数a,b,n,m,求的值. 其中. 分析:依据题意有,所以有结论:,尽管含有根号,可以知道等号右边是 整数.那么我们构造递推关系:,那么本方程的特征根就是:和. ...
最新文章
- 2W 字详解 Redis 6.0 集群环境搭建实践
- 为什么有人会觉得灵魂无处安放
- 摘录nginx 信号处理方法部分代码
- Chrome开发者工具对Vue应用的支持
- hdu120118岁生日
- python向空列表添加列表_Python列表核心知识点汇总
- OpenCV与图像处理学习二——图像直方图与色彩空间
- 小白该如何学习Linux操作系统(1)
- linux如何查看tomcat端口号,如何在Linux中修改tomcat端口号
- jquery设置表单元素只读_jQuery为文本框添加只读属性readOnly
- matplotlb 进阶之Styling with cycler
- (转)招行开启零售银行智能投顾时代 尝试打造金融垂直自场景
- android 长截屏实现,Android实现截屏与截长图功能
- 数据库表结构文档screw
- 数据挖掘实例(航空公司客户价值分析)
- linux装在机械硬盘怎么样,电脑装了固态硬盘还能再装机械硬盘吗
- 别人家的公司年终奖52个月工资-互联网企业年终裁员脸在哪
- 在你们眼中,杭州和苏州都是江南名城,有什么区别?
- python3 运行you get_You-Get的安装及使用方法
- 浅谈空调冷冻机房设计注意事项