POJ2118基础矩阵快速幂
题意:
an=Σ1<=i<=kan-ibi mod 10 000 for n >= k,题意看了好久才懂,有点蛋疼啊,
这个题目要是能看懂题意就简单了,先给你k,然后给你a0 a1 a2 a3 ..ak-1.
然后给你b1 b2 b3 b4 ..bk,然后给你一个i,让你输出ai的值,如果i < k直接输出输入时的ai就行,否则就按照他给的那个公式
an=Σ1<=i<=kan-ibi mod 10 000 for n >= k
比如k=3
那么 a3 = a2*b1 + a1*b2 + a0*b3
a4 = a3*b1 + a2*b2 + a1*b3
a5 = a4*b1 + a3*b2 + a2*b3
a6 = a5*b1 + a4*b2 + a3*b3
......
下面构造矩阵 ,这个矩阵是k*k的,也就是每次都是变的,但是有规律,最大是100*100
,拿k=3举例子
a3 a2 a1 0 0 b1 a2 a3 a4
1 0 b2
0 1 b3
这样就轻松构造这个矩阵了吧,要是k=4也一样
0 0 0 b1
1 0 0 b2
0 1 0 b3
0 0 1 b4
....
好啦就说这么多,最近在忙活写服务器玩,去写自己的服务器喽......
#include<stdio.h>
#include<string.h>#define MOD 10000typedef struct
{int mat[110][110];
}M;M matM(M a ,M b ,int n)
{M c;memset(c.mat ,0 ,sizeof(c.mat));for(int k = 1 ;k <= n ;k ++)for(int i = 1 ;i <= n ;i ++)if(a.mat[i][k])for(int j = 1 ;j <= n ;j ++)c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % MOD;return c;
}M qPowMat(M a ,int b ,int n)
{M c;memset(c.mat ,0 ,sizeof(c.mat));for(int i = 1 ;i <= n ;i ++)c.mat[i][i] = 1;while(b){if(b & 1) c = matM(c ,a ,n);a = matM(a ,a ,n);b >>= 1;}return c;
}int main ()
{int k ,n ,i ,j;int A[105] ,B[105];M star ,ans;while(~scanf("%d" ,&k) && k){for(i = 0 ;i < k ;i ++)scanf("%d" ,&A[i]);for(i = k ;i >= 1 ;i --)scanf("%d" ,&B[i]);scanf("%d" ,&n);if(n < k){printf("%d\n" ,A[n]);continue;}memset(star.mat ,0 ,sizeof(star.mat));for(i = 1 ;i < k ;i ++)star.mat[i+1][i] = 1;for(i = 1 ;i <= k ;i ++)star.mat[i][k] = B[i];ans = qPowMat(star ,n - k + 1 ,k);int sum = 0;for(i = 1 ;i <= k ;i ++)sum = (sum + A[i-1] * ans.mat[i][k]) % MOD;printf("%d\n" ,sum);}return 0;
}
POJ2118基础矩阵快速幂相关推荐
- 数论基础--矩阵快速幂 及其例题
比较详细的讲解了如何构造这个矩阵 https://blog.csdn.net/Akatsuki__Itachi/article/details/80443939 这是几个常用的递推式. 像 i3i^3 ...
- Starry的神奇魔法 矩阵快速幂
题目描述 啦啦啦,Starry正愉快的做着编程题,代码是多么优美呀!突然,有人问他一道数学题,对于数学渣渣的Starry来说,这是多么的烦恼呀.不过不要紧,他还可以问其他人的,所以他想到了聪明的你们. ...
- 矩阵快速幂(Matrix_Fast_Power)
一.基础知识 (1)矩阵乘法 https://blog.csdn.net/weixin_43272781/article/details/82899737 简单的说矩阵就是二维数组,数存在里面,矩阵乘 ...
- 矩阵快速幂的一份小结
矩阵真是个好东西!虽然矩乘的复杂度有点难看... ... 这几天也做了不少矩阵题目,还是有几道好题目的.不过我打算从入门开始. 矩阵乘法:A[i][k]*B[k][j]=C[i][j];(A的第i行的 ...
- 矩阵快速幂的最简单用法
矩阵快速幂 链接:https://ac.nowcoder.com/acm/contest/1168/K 来源:牛客网 题目描述 这个勇者明明超强却过分慎重,勇者龙宫院圣哉与n名冒险者一起去讨伐神秘魔物 ...
- [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)
多年不考试,一夜回到解放前 T1:花园 title solution code T2:月亮神树 title solution code T3:保护出题人 title solution code T1: ...
- 算法分类整理+模板①:矩阵快速幂
一直有一个想法,感觉自己很多基础算法不是很扎实,想要找个机会写一些算法的整理,顺便自己总结一些实用的模板. 最近偶然在训练赛中连续做了2道思维+矩阵快速幂的题目,碰巧有时间,就以矩阵快速幂作为这个系列 ...
- 线性代数 —— 矩阵快速幂
[概述] 矩阵快速幂利用矩阵的乘法与整数快速幂的结合,能够快速的算出 n 阶方阵 A 的 M 次幂 A^b,其结果仍是一个矩阵,无具体含义,在信息学竞赛中,矩阵快速幂常用于求解线性递推关系. 关于矩阵 ...
- 矩阵快速幂的学习(系统的学习)
学习博客:https://www.cnblogs.com/cmmdc/p/6936196.html https://www.cnblogs.com/yan-boy/archive/2012/11/29 ...
最新文章
- 一文读懂Faster R-CNN目标检测
- centos6.4 搭建knowlededgeroot-1.0.4知识库平台
- 正则表达式中的量词(限定符)含义的准确理解
- tcp之backlog参数
- JQuery 插件之Ajax Autocomplete(ajax自动完成)
- linux读取一行数据命令,常用的linux命令和逐行数据处理的例子
- javascript 一次开发,多平台运行
- Python的一些单行代码(摘抄)
- 地理编码涉及的专项技术
- mysql ssh 导入时注意问题
- ap音频测试仪软件,美国进口音频分析仪/AP音频测试仪/电声测试仪
- 你好!编程!你好!世界
- 红帽舍弃 KDE 桌面;暴雪与网易共同研发 “暗黑破坏神”手游
- 蚂蚁集团IPO的小秘密:人均月薪5.5万,利润有望超中国石油
- 绿巨能 macbook pro 电池
- 上帝视角学JAVA- 基础07-类05【2021-08-06】
- mosquitto接口流程图
- 个人收藏的一些资源网站
- 目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)
- 重磅|阿里云HBase Ganos全新升级,推空间、时空、遥感一体化基础云服务