poj 3233 Matrix Power Series
来源:互联网 发布:开票软件服务费抵扣 编辑:程序博客网 时间:2024/05/16 06:27
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int N = 35;struct Matrix{ int m[N][N];};Matrix I;int n,k,M;Matrix add(Matrix a, Matrix b){ Matrix c; for(int i = 0;i < n; i++){ for(int j = 0;j < n; j++){ c.m[i][j] = a.m[i][j] + b.m[i][j]; c.m[i][j] %= M; } } return c;}Matrix multi(Matrix a, Matrix b){ Matrix c; for(int i = 0;i < n; i++){ for(int j = 0;j < n; j++){ c.m[i][j] = 0; for(int k = 0;k < n; k++) c.m[i][j] += a.m[i][k] * b.m[k][j]; c.m[i][j] %= M; } } return c;}Matrix pow(Matrix A, int n){ Matrix ans = I, p = A; while(n > 0){ if(n & 1){ ans = multi(ans, p); } n >>= 1; p = multi(p, p); } return ans;}Matrix sum (Matrix A, int k){ if(k == 1) return A; Matrix t = sum(A, k / 2); if(k & 1){ Matrix cur = pow(A, k/2 + 1); t = add(t, multi(t, cur)); t = add(t , cur); }else{ Matrix cur = pow(A, k/2); t = add(t , multi(t, cur)); } return t;}int main(){ while(scanf("%d%d%d", &n, &k, &M) != EOF){ Matrix A; for(int i = 0;i < n; i++){ for(int j = 0;j < n; j++){ scanf("%d", &A.m[i][j]); A.m[i][j] %= M; I.m[i][j] = (i == j); } } Matrix ans = sum(A, k); for(int i = 0;i < n; i++){ for(int j = 0;j < n; j++){ printf("%d ", ans.m[i][j]); } printf("\n"); } } return 0;}
0 0
- POJ 3233 Matrix Power Series
- POJ 3233Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- Poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233:Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- GIT 学习手册简介
- delphi低版本升高版本问题
- hdoj 5056
- 二叉树的非递归遍历算法
- 初学python,一些总结
- poj 3233 Matrix Power Series
- Zend Framework 入门教程(简体中文版)
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- 关于label那些事(居中,换行,获取高度)
- poj 3111 K Best
- poj 3109 Inner Vertices 树状数组+离散化
- C 语言的可变参数表函数的设计
- poj 3061 尺取法
- abstract类举例