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

#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. QLabel-标签控件的应用

    label = QLabel('我是李明') #创建标签控件对象.参数:标签中要显示的文本 label.setText('我是明明') 修改标签控件显示的文本 self.label.text() 返回 ...

  2. [C++]线性链表之顺序表<二>

    /*   @content 线性链表之顺序表   @date 2017-3-21 1:06   @author Johnny Zen  */ /* 线性表     顺序表     链式表[带头指针/不 ...

  3. Django学习手册 - 模板继承与导入

    核心: PS:一个页面只能继承一个模板. 前置: 配置url. 配置views 关键字: 1. {% extends "index模板.html" %} 声明继承于哪个模板 ,关联 ...

  4. (原)tensorflow中使用指定的GPU及GPU显存

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6591923.html 参考网址: http://stackoverflow.com/questions ...

  5. Elastic-Job-Lite分析——作业调度器 JobScheduler 的创建过程

    -----------------------------------1. 创建注册中心的对象----------------------------------------------------- ...

  6. git入门与实践【转】

    转自:http://www.cnblogs.com/shenhaocn/archive/2011/03/13/1982957.html 什么是版本控制 要了解什么是git,首先需要了解什么是版本控制( ...

  7. 设置linux新用户默认当前目录及使用的shell

    切换到root用户,直接修改/etc/passwd文件,找到你的用户名你一行,如下图所示修改路径,然后保存即可.

  8. nginx常见异常分析

    1.nginx不转发消息头header问题 proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_ ...

  9. OA系统高性能解决方案(史上最全的通达OA系统优化方案)

    序: 这是一篇针对通达OA系统的整体优化方案,文档将硬件.网络.linux操作系统.程序本身(包括web和数据库)以及现有业务有效结合在一起,进行了系统的整合优化.该方案应用于真实生产环境,部署完成后 ...

  10. centos6下通用二进制安装mysql5.5.33

    mysql5.5通用二进制格式安装方法 1.解压到 /usr/local 目录 # tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local 2 ...