洛谷 P3390 【模板】矩阵快速幂
2017-09-02 14:48
246 查看
题目>>https://www.luogu.org/problem/show?pid=3390
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; long long num[105][105],l,ji[105][105],ji2[105][105]; int n,i,j,k; void jzcf(long long a[105][105],long long b[105][105]) //由于这里传入的是地址因此可以赋值。 { for(i = 1;i <= n;i ++) for(j = 1;j <= n;j ++) ji2[i][j] = a[i][j],a[i][j] = 0; //用a来储存答案。 if(a == b) //若a与b的地址相同 ,则把b的地址修改数值相同的ji。 b = ji2; for(i = 1;i <= n;i ++) for(j = 1;j <= n;j ++) for(k = 1;k <= n;k ++) a[i][j] = (a[i][j] + (b[i][k] * ji2[k][j])) % 1000000007; // 第i行的每一个数 * 第j列的每一个数之和就是a[i][j]的值。 } void sqr(long long x) //快速幂。 { while(x) { if(x & 1 == 1) jzcf(ji,num); jzcf(num,num); x = x >> 1; } } int main() { scanf("%d%lld",&n,&l); for(i = 1;i <= n;i ++) for(j = 1;j <= n;j ++) scanf("%lld",&num[i][j]),ji[i][j] = num[i][j]; //ji是原矩阵 * 1; sqr(l - 1); // 已经有了一个 * 1的矩阵。 for(i = 1;i <= n;i ++) { for(j = 1;j <= n;j ++) printf("%lld ",ji[i][j]); puts(""); } }
相关文章推荐
- 洛谷 P3390 【模板】矩阵快速幂
- 洛谷 P3390 【模板】矩阵快速幂
- 洛谷 P3390 矩阵快速幂
- 矩阵快速幂模板及其应用(洛谷3390)(洛谷1962)
- P3390 【模板】矩阵快速幂
- 洛谷 P1939 【模板】矩阵加速(数列):优化递推式的方法——矩阵快速幂
- P3390 【模板】矩阵快速幂
- luogu P3390 【模板】矩阵快速幂
- P3390 【模板】矩阵快速幂
- P3390 【模板】矩阵快速幂
- Additions HNUST 1713(矩阵快速幂模板 )
- poj 3070 矩阵快速幂模板
- HDU 5171 GTY's birthday gift(矩阵快速幂模板)
- 矩阵快速幂模板(1575)
- HDU1575[矩阵快速幂]模板
- HDU2604 Queuing(矩阵快速幂模板)
- 洛谷P3390 【模板】矩阵快速幂
- 矩阵快速幂模板
- 【矩阵快速幂】HDU1575Tr A【模板】
- 矩阵快速幂模板