给定一个矩阵A 要求A + A^2 + A^3 +…. A^k; 
对于到n的等比矩阵求和 
如果n是偶数: 
 
如果n是奇数: 

#include<stdio.h>
#include<string.h>
#include<algorithm> using namespace std; const int maxn = ;
int mod = ;
int n, k; struct matrix {
int mat[maxn][maxn];
}; matrix mat_add(matrix A, matrix B) {
matrix ans;
for(int i=; i<n; i++) {
for(int j=; j<n; j++) {
ans.mat[i][j] = A.mat[i][j] + B.mat[i][j];
ans.mat[i][j] %= mod;
}
}
return ans;
} matrix mat_mul(matrix A, matrix B) {
matrix ans;
memset(ans.mat, , sizeof(ans.mat));
for(int i=; i<n; i++) {
for(int j=; j<n; j++) {
for(int k=; k<n; k++) {
ans.mat[i][j] += A.mat[i][k] * B.mat[k][j];
ans.mat[i][j] %= mod;
}
}
}
return ans;
} matrix mat_pow(matrix A, int b) {
matrix ans;
matrix p = A;
for(int i=; i<n; i++) {
for(int j=; j<n; j++) {
ans.mat[i][j] = (i == j);
}
}
while(b) {
if(b & )
ans = mat_mul(ans, p);
p = mat_mul(p, p);
b >>= ;
}
return ans;
} matrix work(matrix A, int m) {
if(m == )
return A;
matrix t = work(A, m/);
if(m & ) {
matrix cur = mat_pow(A, m/+);
t = mat_add(t, mat_mul(t, cur));
t = mat_add(t, cur);
} else {
matrix cur = mat_pow(A, m/);
t = mat_add(t, mat_mul(t, cur));
}
return t;
} int main() {
while(scanf("%d%d", &n, &k), n) {
matrix A;
for(int i=; i<n; i++) {
for(int j=; j<n; j++) {
int x;
scanf("%d", &x);
A.mat[i][j] = x % ;
}
}
matrix ans = work(A, k);
for(int i=; i<n; i++) {
for(int j=; j<n; j++) {
printf("%d%c", ans.mat[i][j], j==n- ? '\n' : ' ');
}
}
printf("\n");
}
return ;
}

UVA 11149-Power of Matrix(等比矩阵求和)的更多相关文章

  1. UVA 11149 - Power of Matrix(矩阵乘法)

    UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞.∑kiAi=(1+Ak/2)∑k/2iAi,不断二分就可以 代码: ...

  2. UVa 11149 Power of Matrix(倍增法、矩阵快速幂)

    题目链接: 传送门 Power of Matrix Time Limit: 3000MS      Description 给一个n阶方阵,求A1+A2+A3+......Ak. 思路 A1+A2+. ...

  3. UVA 11149 Power of Matrix 快速幂

    题目链接: http://acm.hust.edu.cn/vjudge/contest/122094#problem/G Power of Matrix Time Limit:3000MSMemory ...

  4. UVa 11149 Power of Matrix (矩阵快速幂,倍增法或构造矩阵)

    题意:求A + A^2 + A^3 + ... + A^m. 析:主要是两种方式,第一种是倍增法,把A + A^2 + A^3 + ... + A^m,拆成两部分,一部分是(E + A^(m/2))( ...

  5. UVa 11149 Power of Matrix 矩阵快速幂

    题意: 给出一个\(n \times n\)的矩阵\(A\),求\(A+A^2+A^3+ \cdots + A^k\). 分析: 这题是有\(k=0\)的情况,我们一开始先特判一下,直接输出单位矩阵\ ...

  6. UVA - 11149 Power of Matrix(矩阵倍增)

    题意:已知N*N的矩阵A,输出矩阵A + A2 + A3 + . . . + Ak,每个元素只输出最后一个数字. 分析: A + A2 + A3 + . . . + An可整理为下式, 从而可以用lo ...

  7. UVA 11149 Power of Matrix 构造矩阵

    题目大意:意思就是让求A(A是矩阵)+A2+A3+A4+A5+A6+······+AK,其中矩阵范围n<=40,k<=1000000. 解题思路:由于k的取值范围很大,所以很自然地想到了二 ...

  8. UVA 11149 Power of Matrix

    矩阵快速幂. 读入A矩阵之后,马上对A矩阵每一个元素%10,否则会WA..... #include<cstdio> #include<cstring> #include< ...

  9. Power of Matrix(uva11149+矩阵快速幂)

    Power of Matrix Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit St ...

  10. UVA 11149.Power of Matrix-矩阵快速幂倍增

    Power of Matrix UVA - 11149       代码: #include <cstdio> #include <cstring> #include < ...

随机推荐

  1. 把composer的源切换为 国际的源

      把composer的源切换为 国际的源:composer config -g repo.packagist composer https://packagist.org

  2. Unit 1.前端基础之html

    一.什么是html 定义:全称是超文本标记语言(HyperText Markup Language),它是一种用于创建网页的标记语言.标记语言是一种将文本(Text)以及文本相关的其他信息结合起来,展 ...

  3. CLOUD流程设置

    流程-反写规则 允许超额

  4. vue-axios的application/x-www-form-urlencod的post请求无法解析参数

    vue-axios的post会先将对象转为json然后再根据headers的设置再转一次格式,可以将参数先用qs.stringify()转一次再传输

  5. React 避免重渲染

    组件的重新渲染 我们可以在 React 组件中的 props 和 state 存放任何类型的数据,通过改变 props 和 state,去控制整个组件的状态.当 props 和 state 发生变化时 ...

  6. Jmeter安装与使用(压测)

    一.介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java Se ...

  7. log4j2.xml

    <?xml version="1.0" encoding="UTF-8"?> <configuration status="info ...

  8. Bootstrap之网格类

    代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8 ...

  9. vue-cli:渲染过程理解2(vue init webpack方式创建)

    main.js: 入口文件 import Vue from 'vue' //引入node_modules中的vue import App from './App' //引入当前路径(src)下的App ...

  10. mvc学习过程碰到问题

    Fluent API配置 单例模式+Autofac 批量注入