初二矩阵快速幂定时突袭——总结
矩阵加速入门2#
思路:#
基础的矩阵快速幂题,稍微卡常。
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=2;
R.n=R.m=2;
L.Mat[1][1]=1;L.Mat[1][2]=1;
R.Mat[1][1]=1;R.Mat[1][2]=1;
R.Mat[2][1]=1;R.Mat[2][2]=0;
Matrix ans=L*QuickPow(R,n-2);
printf("%lld\n",ans.Mat[1][1]);
矩阵加速入门3#
思路:#
题目在
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=2;
R.n=R.m=2;
L.Mat[1][1]=1;L.Mat[1][2]=1;
R.Mat[1][1]=p;R.Mat[1][2]=1;
R.Mat[2][1]=q;R.Mat[2][2]=0;
Matrix ans=L*QuickPow(R,n-2);
printf("%lld\n",ans.Mat[1][1]);
矩阵加速入门4#
思路:#
此题为3题的变式,很容易想到将
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=5;
R.n=R.m=5;
L.Mat[1][1]=1;L.Mat[1][2]=1;L.Mat[1][3]=1;L.Mat[1][4]=1;L.Mat[1][5]=1;
R.Mat[1][1]=p;R.Mat[1][2]=1;R.Mat[1][3]=0;R.Mat[1][4]=0;R.Mat[1][5]=0;
R.Mat[2][1]=0;R.Mat[2][2]=0;R.Mat[2][3]=1;R.Mat[2][4]=0;R.Mat[2][5]=0;
R.Mat[3][1]=0;R.Mat[3][2]=0;R.Mat[3][3]=0;R.Mat[3][4]=1;R.Mat[3][5]=0;
R.Mat[4][1]=0;R.Mat[4][2]=0;R.Mat[4][3]=0;R.Mat[4][4]=0;R.Mat[4][5]=1;
R.Mat[5][1]=q;R.Mat[5][2]=0;R.Mat[5][3]=0;R.Mat[5][4]=0;R.Mat[5][5]=0;
Matrix ans=L*QuickPow(R,n-5);
printf("%lld\n",ans.Mat[1][1]);
矩阵加速入门5#
思路:#
此题与
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=4;
R.n=R.m=4;
L.Mat[1][1]=1;L.Mat[1][2]=1;L.Mat[1][3]=2;L.Mat[1][4]=1;
R.Mat[1][1]=p;R.Mat[1][2]=1;R.Mat[1][3]=0;R.Mat[1][4]=0;
R.Mat[2][1]=q;R.Mat[2][2]=0;R.Mat[2][3]=0;R.Mat[2][4]=0;
R.Mat[3][1]=1;R.Mat[3][2]=0;R.Mat[3][3]=1;R.Mat[3][4]=0;
R.Mat[4][1]=1;R.Mat[4][2]=0;R.Mat[4][3]=1;R.Mat[4][4]=1;
Matrix ans=L*QuickPow(R,n-2);
printf("%lld\n",ans.Mat[1][1]);
矩阵加速入门6#
思路:#
多一个
如此就得到了
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=5;
R.n=R.m=5;
L.Mat[1][1]=1;L.Mat[1][2]=1;L.Mat[1][3]=4;L.Mat[1][4]=2;L.Mat[1][5]=1;
R.Mat[1][1]=p;R.Mat[1][2]=1;R.Mat[1][3]=0;R.Mat[1][4]=0;R.Mat[1][5]=0;
R.Mat[2][1]=q;R.Mat[2][2]=0;R.Mat[2][3]=0;R.Mat[2][4]=0;R.Mat[2][5]=0;
R.Mat[3][1]=1;R.Mat[3][2]=0;R.Mat[3][3]=1;R.Mat[3][4]=0;R.Mat[3][5]=0;
R.Mat[4][1]=3;R.Mat[4][2]=0;R.Mat[4][3]=2;R.Mat[4][4]=1;R.Mat[4][5]=0;
R.Mat[5][1]=3;R.Mat[5][2]=0;R.Mat[5][3]=1;R.Mat[5][4]=1;R.Mat[5][5]=1;
Matrix ans=L*QuickPow(R,n-2);
printf("%lld\n",ans.Mat[1][1]);
矩阵加速入门7#
思路:#
这应该是最复杂的一道题了,如
如此就得到了
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=6;
R.n=R.m=6;
L.Mat[1][1]=1;L.Mat[1][2]=1;L.Mat[1][3]=8;L.Mat[1][4]=4;L.Mat[1][5]=2;L.Mat[1][6]=1;
R.Mat[1][1]=a;R.Mat[1][2]=1;R.Mat[1][3]=0;R.Mat[1][4]=0;R.Mat[1][5]=0;R.Mat[1][6]=0;
R.Mat[2][1]=b;R.Mat[2][2]=0;R.Mat[2][3]=0;R.Mat[2][4]=0;R.Mat[2][5]=0;R.Mat[2][6]=0;
R.Mat[3][1]=c;R.Mat[3][2]=0;R.Mat[3][3]=1;R.Mat[3][4]=0;R.Mat[3][5]=0;R.Mat[3][6]=0;
R.Mat[4][1]=d+3*c;R.Mat[4][2]=0;R.Mat[4][3]=3;R.Mat[4][4]=1;R.Mat[4][5]=0;R.Mat[4][6]=0;
R.Mat[5][1]=d*2+3*c;R.Mat[5][2]=0;R.Mat[5][3]=3;R.Mat[5][4]=2;R.Mat[5][5]=1;R.Mat[5][6]=0;
R.Mat[6][1]=c+d+e;R.Mat[6][2]=0;R.Mat[6][3]=1;R.Mat[6][4]=1;R.Mat[6][5]=1;R.Mat[6][6]=1;
Matrix ans=L*QuickPow(R,n-2);
printf("%lld\n",ans.Mat[1][1]);
矩阵加速入门8#
思路:#
比较水的一道题,只需修改初始矩阵即与
原始矩阵:#
加速矩阵:#
代码:#
Code
L.n=1,L.m=6;
R.n=R.m=6;
L.Mat[1][1]=k2;L.Mat[1][2]=k1;L.Mat[1][3]=2;L.Mat[1][4]=1;
R.Mat[1][1]=p;R.Mat[1][2]=1;R.Mat[1][3]=0;R.Mat[1][4]=0;
R.Mat[2][1]=q;R.Mat[2][2]=0;R.Mat[2][3]=0;R.Mat[2][4]=0;
R.Mat[3][1]=1;R.Mat[3][2]=0;R.Mat[3][3]=1;R.Mat[3][4]=0;
R.Mat[4][1]=1;R.Mat[4][2]=0;R.Mat[4][3]=1;R.Mat[4][4]=1;
Matrix ans=L*QuickPow(R,n-2);
printf("%lld\n",ans.Mat[1][1]);
总结#
失误巨大,将每题的
考后悲伤没有用,希望以后读题,打代码一定细心仔细,不再犯此类低级错误!
信仰不渝
Unswerving faith
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律