E - Matrix Power Series (矩阵数列)
然后,怎么来求这个前k项的和,我把式子推一下
当k为奇数的时候直接SK-1+AK 就又化为偶数的情况了。代码如下:
#include<iostream>
#include<cstring>
using namespace std;
#define ll int
ll n, mod, k;
struct jz
{
ll num[][];
jz(){ memset(num, , sizeof(num)); }
jz operator*(const jz&p)const
{
jz ans;
for (int k = ; k < n; ++k){
for (int i = ; i < n; ++i){
if (num[i][k] == )continue;
for (int j = ; j < n; ++j)
{
if (p.num[k][j] == )continue;
ans.num[i][j] = (ans.num[i][j] + num[i][k] * p.num[k][j] % mod) % mod;
}
}
}
return ans;
}
jz operator+(const jz&p)const
{
jz ans;
for (int i = ; i < n;++i)
for (int j = ; j < n; ++j)
ans.num[i][j] = (num[i][j] + p.num[i][j]) % mod;
return ans;
}
}mat, E;
jz pow(jz x, ll m)
{
jz ans;
for (int i = ; i < n; ++i)ans.num[i][i] = ;
for (; m; m >>= , x = x*x)
if (m & )ans = ans*x;
return ans;
}
jz sum(ll h)
{
if (h == )return mat;
else if (h & ) return sum(h - ) + pow(mat, h);
else return (pow(mat, h / ) + E)*sum(h / );
}
int main()
{
ios::sync_with_stdio(false); cin.tie();
cin >> n >> k >> mod;
for (int i = ; i < n; ++i)E.num[i][i] = ; for (int i = ; i < n;++i)
for (int j = ; j < n; ++j)
cin >> mat.num[i][j];
jz ans = sum(k);
for (int i = ; i < n; ++i)
{
for (int j = ; j < n; ++j)
cout << ans.num[i][j] << " ";
cout << endl;
}
}
E - Matrix Power Series (矩阵数列)的更多相关文章
- C++题解:Matrix Power Series ——矩阵套矩阵的矩阵加速
Matrix Power Series r时间限制: 1 Sec 内存限制: 512 MB 题目描述 给定矩阵A,求矩阵S=A^1+A^2+--+A^k,输出矩阵,S矩阵中每个元都要模m. 数据范围: ...
- poj 3233 Matrix Power Series(矩阵二分,高速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 15739 Accepted: ...
- POJ3233 Matrix Power Series 矩阵快速幂 矩阵中的矩阵
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 27277 Accepted: ...
- Poj 3233 Matrix Power Series(矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Description Given a n × n matrix A and ...
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 18450 Accepted: ...
- POJ 3233 Matrix Power Series 矩阵快速幂
设S[k] = A + A^2 +````+A^k. 设矩阵T = A[1] 0 E E 这里的E为n*n单位方阵,0为n*n方阵 令A[k] = A ^ k 矩阵B[k] = A[k+1] S[k] ...
- POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
职务地址:POJ 3233 题目大意:给定矩阵A,求A + A^2 + A^3 + - + A^k的结果(两个矩阵相加就是相应位置分别相加).输出的数据mod m. k<=10^9. 这 ...
- POJ3233:Matrix Power Series(矩阵快速幂+二分)
http://poj.org/problem?id=3233 题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是对应位置分别相加).输出的数据mod m.k ...
- POJ3233 Matrix Power Series(矩阵快速幂+分治)
Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. ...
- POJ3233:Matrix Power Series(矩阵快速幂+递推式)
传送门 题意 给出n,m,k,求 \[\sum_{i=1}^kA^i\] A是矩阵 分析 我们首先会想到等比公式,然后得到这样一个式子: \[\frac{A^{k+1}-E}{A-E}\] 发现要用矩 ...
随机推荐
- 鸟哥的Linux私房菜:基础学习篇 —— 第六章笔记
1.下面这些就是比较特殊的目录,得要用力的记下来才行: . 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表“目前使用者身份”所在的主文件夹 ~account 代表 account ...
- HAProxy(二):HAProxy的ACL规则实现智能负载均衡详解与示例
一.HAProxy的ACL的功能 ACL(Access Control List)访问控制列表,HAProxy中的ACL的匹配条件和控制条件有许多种,功能很强大,可以通过源地址.源端口.目标地址.目标 ...
- Visual Studio日文乱码解决方法
---恢复内容开始--- 验证N多网上方法之后,没能解决,最后在控制面板->时钟.语言和区域->语言中左下角点击位置,进入区域窗口,管理选项中的更改系统区域语言,设为日语,解决,截图附上. ...
- 编写计算器程序学习JS责任链模式
设计模式中的责任链模式能够很好的处理程序过程的逻辑判断,提高程序可读性. 责任链模式的核心在于责任链上的元素判断能够处理该数据,不能处理的话直接交给它的后继者. 计算器的基本样式: 通过div+css ...
- LeetCode算法笔记目录
贪心算法: LeetCode翻转矩阵后的得分-Python3<六> LeetCode根据身高重建队列-Python3<七> LeetCode 任务调度器-Python3< ...
- jquery 截取屏幕
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- ssh介绍
一.SSH概念(百度) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH ...
- Android实现两次点击返回键提示退出
Android的很多app中,都有点击一次返回键提示再次点击退出app的功能. 今天就看了下实现的方式,其实就是在相应的Activity中重写了onKeyDown()方法.在onKeyDown()方法 ...
- ajax请求完之前的loading加载
很多时候我们需要引入框架来开发项目,这时我们可能会遇到页面还没加载完源码出来了的问题,给用户一种不好的视觉体验,这是便需要loading加载了,来完善用户体验! /*loading.js*/ // 加 ...
- Node.js+Koa开发微信公众号个人笔记(二)响应事件
微信公众号中的事件有订阅事件/扫码事件/点击事件/跳转链接事件等等,具体可以查阅文档. 这里来实现一下订阅事件,其他的事件的实现过程也都类似. 当有人订阅了公众号后,微信服务器会向我们的服务器推送一个 ...