第一道矩阵快速幂的题;模板题;

#include<stack>
#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; #define INF 0x3f3f3f3f
typedef long long ll;
const ll maxn = ;
int n;
int m; ll euler[maxn];
ll fun_[maxn]; struct node
{
int a[][];
node()
{
memset(a,,sizeof(a));
}
node operator *(const node& m2) const
{
node m1;
for (int i=; i<n; i++)
{
for (int j=; j<n; j++)
{
m1.a[i][j]=;
for (int k=; k<n; k++)
{
m1.a[i][j]+=a[i][k]*m2.a[k][j];
m1.a[i][j]%=;
}
}
}
return m1;
}
node operator +(const node& m2) const
{
node m1;
for (int i=; i<n; i++)
{
for (int j=; j<n; j++)
{
m1.a[i][j]=a[i][j]+m2.a[i][j];
m1.a[i][j]%=;
}
}
return m1;
} } A,E; void init()
{
memset(E.a,,sizeof(E.a));
for (int i=;i<n;i++)
{
// for (int j=0;j<n;j++)
// {
// if (i==j)
E.a[i][i]=;
// }
}
} node quick_mod_(node c,int k)
{
node e=E;
while (k)
{
if(k&) e=e*c;
c = c*c;
k>>=;
}
return e;
} node find_(int k)
{
if (k==)
{
return A;
}
if(k%==)
{
k/=;
node nod=quick_mod_(A,k)+E;
nod=nod*find_(k);
return nod;
}
else
{
node t=quick_mod_(A,k);
k--;
k/=;
node nod=quick_mod_(A,k)+E;
nod=nod*find_(k);
//cout<<nod.a[0][3]<<endl;
nod = nod +t;
return nod;
}
} void print_(node p)
{
for (int i=;i<n;i++)
{
for (int j=;j<n;j++)
{
if (!j)
cout<<p.a[i][j];
else
cout<<" "<<p.a[i][j];
}cout<<endl;
}
} int main()
{
int kase=; while (cin>>n>>m&&(m+n))
{
init();
if (kase) cout<<endl;
for (int i=; i<n; i++)
{
for (int j=; j<n; j++)
{
cin>>A.a[i][j];
A.a[i][j]%=;
}
}
node q=find_(m);
// cout<<endl;
// cout<<q.a[0][0]<<" "<<q.a[0][1]<<" "<<q.a[0][2]<<endl<<endl;
print_(q);
kase++;
}
return ;
} /*
3 2
0 2 0
0 0 2
0 0 0 */

倍增法的 解释:

UVA - 11149 (矩阵快速幂+倍增法)的更多相关文章

  1. BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)

    题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...

  2. 2019 牛客暑期多校 B generator 1 (矩阵快速幂+倍增)

    题目:https://ac.nowcoder.com/acm/contest/885/B 题意:给你x0,x1,让你求出xn,递推式时xn=a*xn-1+b*xn-2 思路:这个n特别大,我自己没有摸 ...

  3. UVa 11149 矩阵的幂(矩阵倍增法模板题)

    https://vjudge.net/problem/UVA-11149 题意: 输入一个n×n矩阵A,计算A+A^2+A^3+...A^k的值. 思路: 矩阵倍增法. 处理方法如下,一直化简下去直到 ...

  4. UVa 10870 & 矩阵快速幂

    题意: 求一个递推式(不好怎么概括..)的函数的值. 即 f(n)=a1f(n-1)+a2f(n-2)+...+adf(n-d); SOL: 根据矩阵乘法的定义我们可以很容易地构造出矩阵,每次乘法即可 ...

  5. UVa 10870 (矩阵快速幂) Recurrences

    给出一个d阶线性递推关系,求f(n) mod m的值. , 求出An-dv0,该向量的最后一个元素就是所求. #include <iostream> #include <cstdio ...

  6. POJ-3070Fibonacci(矩阵快速幂求Fibonacci数列) uva 10689 Yet another Number Sequence【矩阵快速幂】

    典型的两道矩阵快速幂求斐波那契数列 POJ 那是 默认a=0,b=1 UVA 一般情况是 斐波那契f(n)=(n-1)次幂情况下的(ans.m[0][0] * b + ans.m[0][1] * a) ...

  7. 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)

    传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...

  8. uva 10518 - How Many Calls?(矩阵快速幂)

    题目链接:uva 10518 - How Many Calls? 公式f(n) = 2 * F(n) - 1, F(n)用矩阵快速幂求. #include <stdio.h> #inclu ...

  9. LOJ2325. 「清华集训 2017」小 Y 和恐怖的奴隶主【矩阵快速幂优化DP】【倍增优化】

    LINK 思路 首先是考虑怎么设计dp的状态 发现奴隶主的顺序没有影响,只有生命和个数有影响,所以就可以把每个生命值的奴隶主有多少压缩成状态就可以了 然后发现无论是什么时候一个状态到另一个状态的转移都 ...

随机推荐

  1. Elastic Job入门(1) - 简介

    介绍 构建一般的业务系统来说,使用Quartz或者Spring Task即可基本满足我们的单体服用应用需要.然而随着线上业务量的不断发展,这两种定时任务已经日渐无法满足我们的需求.一般,使用这两种定时 ...

  2. luogu P1053 篝火晚会

    传送门 首先如果题目的目标状态不是一个环就不合法 然后先把这个环搞出来,然后每个位置上的数对这个数对应的位置连边,可以发现有若干个环,而只要对这些环执行操作就好了,答案上界显然是\(n\).然后,如果 ...

  3. spoj gss1 gss3

    传送门 gss1 gss3 spoj gss系列=最大字段和套餐 gss1就是gss3的无单点修改版 有区间查询和单点修改,考虑用线段树维护 我们要维护区间权值和\(s\),区间最大前缀和\(xl\) ...

  4. 【反射】利用java反射原理将xml文件中的字段封装成对应的Bean

    本例使用的xml解析方式为jdom ... <ROOT> <Consignment> ... </Consignment> </ROOT> 解析xml文 ...

  5. 分享一款Markdown的css样式

    使用 本样式在这个样式的基础上做了一些修改, 主要是对于表格和代码块以及一些细节的修改. 主要目的是用在chrome的扩展 Markdown Preview Plus中, 替换其内置的样式. 由于 M ...

  6. mysql 案例~ 分区表

    一 简介:今天来聊聊分区表的概念和维护二分区的优点:  1.提高查询性能:只需要搜索特定分区,而非整张表,提高了查询速度.  2.节约维护时间:单个分区的数据装载,索引重建,备份,维护远远小于整张表的 ...

  7. 『转载』hadoop 1.X到2.X的变化

    表1新旧hadoop脚本/变量/位置变化表 改变项 原框架中 新框架中(Yarn) 备注 配置文件位置 ${hadoop_home_dir}/conf ${hadoop_home_dir}/etc/h ...

  8. igmp组播测试环境搭建

    2.4G无线组播测试环境搭建: (1)组播源: VLC 或者 pixstream (2)无线: 2.4G AP (3)客户端PC: VLC播放器 有线直连 无线2.4G PC(组播源pixstream ...

  9. IDEA测试结果查看

    点击漏斗图标切换查看测试日志信息,点击,导出测试报告

  10. redis介绍以及安装

    一.redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的values类型相对更多,包括字符串.列表.哈希散列表.集合,有序集合. 这些数据类型都支持pus ...