UVA 11149.Power of Matrix-矩阵快速幂倍增
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 44
#define mod 10
int n;
struct matrix{
int f[maxn][maxn];
};
matrix sum(matrix a,matrix b){
int i,j;
matrix s;
for(i=;i<n;i++)
for(j=;j<n;j++)
s.f[i][j]=(a.f[i][j]+b.f[i][j])%mod;
return s;
}
matrix mul(matrix a,matrix b){
int i,j,k;
matrix s;
memset(s.f,,sizeof(s.f));
for(i=;i<n;i++)
for(j=;j<n;j++)
for(k=;k<n;k++)
s.f[i][j]=(s.f[i][j]+a.f[i][k]*b.f[k][j])%mod;
return s;
}
matrix pows(matrix e,int b){
matrix s,a;
int i,j,k;
a=e;
for(i=;i<n;i++)
for(j=;j<n;j++)
if(i==j)s.f[i][j]=;
else s.f[i][j]=;
while(b){
if(b&)
s=mul(s,a);
a=mul(a,a);
b=b>>;
}
return s;
}
matrix work(matrix e,int k){
matrix s,a,b;
if(k==)
return e;
a=work(e,k/);
s=sum(a,mul(a,pows(e,k/)));
if(k&)
s=sum(s,pows(e,k));
return s;
}
int main(){
int k;
while( cin>>n>>k){
if(n==)
break;
int i,j,a;
matrix e;
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
cin>>a;
e.f[i][j]=a%;
}
}
e=work(e,k);
for(i=;i<n;i++)
{
cout<<e.f[i][];
for(j=;j<n;j++)
cout<<" "<<e.f[i][j];
cout<<endl;
}
cout<<endl;
}
return ;
}
UVA 11149.Power of Matrix-矩阵快速幂倍增的更多相关文章
- UVa 11149 Power of Matrix (矩阵快速幂,倍增法或构造矩阵)
题意:求A + A^2 + A^3 + ... + A^m. 析:主要是两种方式,第一种是倍增法,把A + A^2 + A^3 + ... + A^m,拆成两部分,一部分是(E + A^(m/2))( ...
- UVa 11149 Power of Matrix 矩阵快速幂
题意: 给出一个\(n \times n\)的矩阵\(A\),求\(A+A^2+A^3+ \cdots + A^k\). 分析: 这题是有\(k=0\)的情况,我们一开始先特判一下,直接输出单位矩阵\ ...
- UVA 11149 - Power of Matrix(矩阵乘法)
UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞.∑kiAi=(1+Ak/2)∑k/2iAi,不断二分就可以 代码: ...
- BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)
题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...
- POJ 3233 Matrix Power Series(矩阵快速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19338 Accepted: 8161 ...
- POJ 3233 Matrix Power Series (矩阵快速幂+二分求解)
题意:求S=(A+A^2+A^3+...+A^k)%m的和 方法一:二分求解S=A+A^2+...+A^k若k为奇数:S=(A+A^2+...+A^(k/2))+A^(k/2)*(A+A^2+...+ ...
- POJ 3233 Matrix Power Series (矩阵快速幂)
题目链接 Description Given a n × n matrix A and a positive integer k, find the sum S = A + A^2 + A^3 + - ...
- 题解报告:poj 3233 Matrix Power Series(矩阵快速幂)
题目链接:http://poj.org/problem?id=3233 Description Given a n × n matrix A and a positive integer k, fin ...
- UVA - 11149 (矩阵快速幂+倍增法)
第一道矩阵快速幂的题:模板题: #include<stack> #include<queue> #include<cmath> #include<cstdio ...
随机推荐
- 《Cracking the Coding Interview》——第7章:数学和概率论——题目1
2014-03-20 01:57 题目:玩篮球投篮,有两种玩法:要么1投1中,要么3投两中.你单次投篮中的概率是p,那么对于不同的p,哪种玩法胜率更高? 解法:第一种总是胜率更高,可以列不等式算算,结 ...
- 利用binlog server及Xtrabackup备份集来恢复误删表(drop)
Preface Today I'm gonna test how to rescue a dropped table from binlog server based on a ful ...
- CentOS vim中backspace不能用,出现^?的解决方法
查看在VI配置器下面使用backspace删除时提示输出那个字符例如:^H.^?.^a等字符如果输出的是:^? 字符 则使用以下命令:[oracle@junyii~]$ stty erase ^? 再 ...
- 遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone(我是通过下标取键得到对应值,有哪位大神来个更简单的)
lt = [ {'name':'小王', 'age':18, 'info':[('phone', '123'), ('dizhi', '广州')]}, {'name':'小芳', 'age':19, ...
- Python网络编程(weekly summary1)
网络的目的是什么? 用于信息传输.接受 能把各个点.面.体的信息链接到一起 实现资源的共享 OSI模型: 应用层:提供程序服务 表示层:数据加密.优化.压缩 会话层: ...
- mysql安装目录、配置文件存放位置
linux系统下,如何知道mysql使用的配置文件到底是哪个呢?linux自带的mysql的安装目录又是什么呢?数据存放在什么目录下? 1.linux系统自带的mysql,其安装目录及数据目录查看方法 ...
- springmvc maven搭建二之springmvc的security
上一篇文档初步搭建了一个springmvc的web工程,现在要来实现第二步咯.将登录校验整合到项目中,我用的是spring 3.0.2的版本,所以这里的登录用了security来处理.不多说,上代码. ...
- Hexo-设置阅读全文
最近使用Hexo搭建了自己的博客,并且使用了简洁但是强大的NexT主题.这里介绍一下NexT主题下设置在首页显示一篇文章的简介,在简介后面提供一个链接阅读全文来进入文章的详情页.效果请看 我的小窝 在 ...
- bpf 指令集
58 struct bpf_insn { 59 __u8 code; /* opcode */ 60 __u8 dst_reg:4; /* dest register */ 61 __u8 src_r ...
- nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题
For reference, I am attaching my location block for catching files with the .php extension: location ...