不会的来这看:https://www.cnblogs.com/CXCXCXC/p/4641812.html

简单的一说:当转换为二进制的时候有位运算这种黑科技,&相当于%2判断奇偶性。

x&1==0为偶,x&1==1为奇

&运算通常用于二进制取位操作,例如一个数 & 1 的结果就是取二进制的最末位。还可以判断奇偶x&1==0为偶,x&1==1为奇

只有在奇数情况的时候把base乘进去,每一次用base*base扩大平方,b的二进制去除一位。

 int poww(int a,int b){
int ans=,base=a;
while(b!=){
if(b&==)
  ans*=base;
base*=base;
b>>=;
  }
return ans;
}

接下来是矩阵快速幂。

摘自:blog.csdn.net/wust_zzwh/article/details/52058209

其中c[i][j]为A的第i行与B的第j列对应乘积的和,即:

 #include<bits/stdc++.h>

 #define LL long long
using namespace std; LL n,k; const long long pi=1e9+; struct ska{
LL a[+][+];
}p,pp; ska X(ska x,ska y){
ska box; for(LL i=;i<=n;i++){
for(LL j=;j<=n;j++){
box.a[i][j]=;
}
} for(LL i=;i<=n;i++){ for(LL j=;j<=n;j++){ for(LL k=;k<=n;k++){ box.a[i][j]=(box.a[i][j]+(x.a[i][k]*y.a[k][j])%pi)%pi; }
}
} return box;
} ska quick_pow(LL kk){ ska ans; for(LL i=;i<=n;i++){
ans.a[i][i]=;
} while(kk!=){ if(kk&==){ ans=X(ans,p);
} kk>>=; p=X(p,p); } return ans;
} int main(){
scanf("%lld%lld",&n,&k); for(LL i=;i<=n;i++){ for(LL j=;j<=n;j++){ scanf("%lld",&p.a[i][j]); }
} pp=quick_pow(k); for(LL i=;i<=n;i++){ for(LL j=;j<=n;j++){ printf("%lld ",pp.a[i][j]); } cout<<endl;
}
return ;
}

[板子]快速幂&矩阵快速幂的更多相关文章

  1. 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式

    矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b     *     A B   =   a*A+b*C  a*c+b*D c d     ...

  2. 快速幂 & 矩阵快速幂

    目录 快速幂 实数快速幂 矩阵快速幂 快速幂 实数快速幂 普通求幂的方法为 O(n) .在一些要求比较严格的题目上很有可能会超时.所以下面来介绍一下快速幂. 快速幂的思想其实是将数分解,即a^b可以分 ...

  3. jiulianhuan 快速幂--矩阵快速幂

    题目信息: 1471: Jiulianhuan 时间限制: 1 Sec  内存限制: 128 MB 提交: 95  解决: 22 题目描述 For each data set in the input ...

  4. 【数论】 快速幂&&矩阵快速幂

    首先复习快速幂 #include<bits/stdc++.h> using namespace std; long long power(long long a,long long b,l ...

  5. 整数快速乘法/快速幂+矩阵快速幂+Strassen算法

    快速幂算法可以说是ACM一类竞赛中必不可少,并且也是非常基础的一类算法,鉴于我一直学的比较零散,所以今天用这个帖子总结一下 快速乘法通常有两类应用:一.整数的运算,计算(a*b) mod c  二.矩 ...

  6. 快速幂&&矩阵快速幂

    快速幂 题目链接:https://www.luogu.org/problemnew/show/P1226 快速幂用了二分的思想,即将\(a^{b}\)的指数b不断分解成二进制的形式,然后相乘累加起来, ...

  7. hdu 4549 M斐波那契数列(快速幂 矩阵快速幂 费马小定理)

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4549: 题目是中文的很容易理解吧.可一开始我把题目看错了,这毛病哈哈. 一开始我看错题时,就用了一个快速 ...

  8. 矩阵快速幂模板(pascal)

    洛谷P3390 题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 输入输出格式 输入格式: 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格 ...

  9. 培训补坑(day10:双指针扫描+矩阵快速幂)

    这是一个神奇的课题,其实我觉得用一个词来形容这个算法挺合适的:暴力. 是啊,就是循环+暴力.没什么难的... 先来看一道裸题. 那么对于这道题,显然我们的暴力算法就是枚举区间的左右端点,然后通过前缀和 ...

随机推荐

  1. PHPCMS快速建站系列之邮箱验证

    1. 登录163邮箱,->设置,开启POP3服务->把SMTP服务器地址复制到PHPCMS后台. 2.开启客户端授权密码 3.填写相关信息,.可以在测试邮箱填入邮箱地址测试

  2. PLAY2.6-SCALA(三) 数据的返回与保存

    1.修改默认的Content-Type 自动设置内容类型为text/plain val textResult = Ok("Hello World!") 自动设置内容类型为appli ...

  3. poj 3280【区间dp】

    poj 3280 题意:给定一个字符串和每个字符删去和增加的代价,求使字符串变成回文串操作所需的最小代价. 题解:哇!开心!终于亲自做对了!做完这两题这个就回了.uva10739  uva 10453 ...

  4. 关闭myeclipse可视化视图

    ctrl+w  关闭各个文件  重新打开即可 方法二:

  5. ef core 随记

    EntityTypeConfiguration internal class OrderEntityTypeConfiguration : IEntityTypeConfiguration<Or ...

  6. QT_OPENGL-------- 3.ElementArraryBuffer

    与上一节内容基本相同,只是用ElementArraryBuffer绘制三角形,也就是VBO与IBO. 1.VBO 一系列点,通过glDrawArrays指定绘制几个点,是连续的,不能跳跃.2.IBO( ...

  7. 20.libgdx,stage中默认相机的使用

    主要思路: 通过查资料得知,stage中的默认封装的相机为OrthographicCamera,要操纵该相机,直接把他转化为OrthographicCamera即可使用 但是这会导致一个问题,即原本固 ...

  8. 一 linux安装python3

    参考 https://www.cnblogs.com/pyyu/p/7402145.html?tdsourcetag=s_pcqq_aiomsg 1 下载 网址:https://www.python. ...

  9. Spring data jpa hibernate:查询异常java.sql.SQLException: Column '列名' not found

    使用spring boot,jap,hibernate不小心的错误: java.sql.SQLException: Column '列名' not found: 这句话的意思是:找不到此列 为什么会出 ...

  10. 14 个你可能不知道的 JavaScript 调试技巧

    了解你的工具可以极大的帮助你完成任务.尽管 JavaScript 的调试非常麻烦,但在掌握了技巧 (tricks) 的情况下,你依然可以用尽量少的的时间解决这些错误 (errors) 和问题 (bug ...