的确和题目描述一样,见过这个类型就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 矩阵相关推荐

  1. HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. 湘潭赛Easy wuxing(递推+矩阵快速幂or DP)

    湘潭赛Easy wuxing(递推+矩阵快速幂or DP) 十分感谢老师的思路! 题目描述 "五行"是中国传统哲学思想,它认为认为大自然的现象由"木.火.土.金.水&qu ...

  3. HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)

    题目链接:点击查看 题意:给出a,b,m,n,求 解析:题意一目了然,此题的关键是推出解决问题的公式. 首先,题目要求括号内n次方后向上取整再模m,而这里给到的a与b的关系接下来也会用到:<b& ...

  4. hdu4565之矩阵快速幂

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  5. HDOJ How many ways?? 2157【矩阵高速幂】

    How many ways? ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. 构造类斐波那契数列矩阵(矩阵

    题目:HDU4565 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 题意: 求 f(x) = ceil( (a +sqrt(b))^n ) ...

  7. 简述推荐系统中的矩阵分解

    AI有道 一个有情怀的公众号 1 Linear Network Hypothesis 回顾一下,我们在机器学习基石课程的第一节课就提到过,机器学习的目的就是让机器从数据data中学习到某种能力skil ...

  8. 汉高澳大利亚matrix矩阵计算器

    我在梦中的超级计算机超级计算机锯,使用大量阵列的cpu记忆,完成并行计算.一个手机制造商由于使用普通机械提供的服务,往往造成停机.是铁道部列车网络售票的事实. 无法使用云服务.上万台计算机并行处理,因 ...

  9. matlab矩阵按坐标取,在Matlab中获取inlier点的坐标(Get coordinates of inlier points in Matlab)...

    在Matlab中获取inlier点的坐标(Get coordinates of inlier points in Matlab) 我需要找到使用impixel()在对象检测中获得的内部点的像素值. 我 ...

  10. 构造类斐波那契数列矩阵

    题目:HDU4565 题意:给定正整数a,b,n,m,求的值. 其中.   分析:依据题意有,所以有结论:,尽管含有根号,可以知道等号右边是 整数.那么我们构造递推关系:,那么本方程的特征根就是:和. ...

最新文章

  1. 2W 字详解 Redis 6.0 集群环境搭建实践
  2. 为什么有人会觉得灵魂无处安放
  3. 摘录nginx 信号处理方法部分代码
  4. Chrome开发者工具对Vue应用的支持
  5. hdu120118岁生日
  6. python向空列表添加列表_Python列表核心知识点汇总
  7. OpenCV与图像处理学习二——图像直方图与色彩空间
  8. 小白该如何学习Linux操作系统(1)
  9. linux如何查看tomcat端口号,如何在Linux中修改tomcat端口号
  10. jquery设置表单元素只读_jQuery为文本框添加只读属性readOnly
  11. matplotlb 进阶之Styling with cycler
  12. (转)招行开启零售银行智能投顾时代 尝试打造金融垂直自场景
  13. android 长截屏实现,Android实现截屏与截长图功能
  14. 数据库表结构文档screw
  15. 数据挖掘实例(航空公司客户价值分析)
  16. linux装在机械硬盘怎么样,电脑装了固态硬盘还能再装机械硬盘吗
  17. 别人家的公司年终奖52个月工资-互联网企业年终裁员脸在哪
  18. 在你们眼中,杭州和苏州都是江南名城,有什么区别?
  19. python3 运行you get_You-Get的安装及使用方法
  20. 浅谈空调冷冻机房设计注意事项

热门文章

  1. Kubernetes基础:Pod中的Pause容器
  2. python之爬虫(十一) 实例爬取上海高级人民法院网开庭公告数据
  3. jq富文本_jQuery富文本编辑器Notebook
  4. Chromium内核的浏览器Browsers查看Chromium的版本 : navigator.userAgent
  5. Hadoop-Spark企业应用实战
  6. 桃李春风一杯酒,江湖夜雨十年灯。—第十一天
  7. RC时间常数 积分微分 耦合
  8. 浅谈一下静态代理IP都能用来干什么?
  9. Android 永久保存数据
  10. 《失业的程序员》(十二):潜意识的智商