poj 3233 Matrix Power Series
来源:互联网 发布:php url传递参数 编辑:程序博客网 时间:2024/04/30 02:18
还是矩阵的快速幂。。。
只要令Sk=I+A+A^2+.....A^(k-1)
则有 Ak = | A 0 | Ak-1 = | A 0 | ^ k |
Sk | I I | Sk-1 | I I | 0
其中I是单位矩阵
最后矩阵的左下角的那个小矩阵就是要求的(只不过要减去一个单位矩阵)
#include<stdio.h>struct node{int c[70][70];}FAB;int n,m,k;struct node B;struct node mul(struct node *a,struct node *b){struct node t;int i,j,k;for(i=0;i<2*n;i++)for(j=0;j<2*n;j++)t.c[i][j]=0;for(i=0;i<2*n;i++)for(j=0;j<2*n;j++)for(k=0;k<2*n;k++){t.c[i][j]=(t.c[i][j]+a->c[i][k]*b->c[k][j])%m;}return t;}struct node power(struct node *a,int num){struct node temp;int i,j;for(i=0;i<2*n;i++)for(j=0;j<2*n;j++){if(i==j)temp.c[i][j]=1;elsetemp.c[i][j]=0;}while(num>0){if(num&1)temp=mul(&temp,a);*a=mul(a,a);num>>=1;}return temp;}int main(void){int a,i,j;scanf("%d%d%d",&n,&k,&m);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&FAB.c[i][j]);B.c[i][j]=FAB.c[i][j];}B.c[n+i][i]=B.c[n+i][n+i]=1;}B=power(&B,k+1);for(i=0;i<n;i++){for(j=0;j<n;j++){a=B.c[n+i][j]%m;if(i==j)a=(a+m-1)%m;printf("%d ",a);}printf("\n");} }
0 0
- POJ 3233 Matrix Power Series
- POJ 3233Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- Poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233:Matrix Power Series
- POJ 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- poj 3233 Matrix Power Series
- POJ 3233 Matrix Power Series
- Windows8.1+vs2013+opencv2.4.9环境配置
- Cheerleaders UVA
- jzoj P1338 【2011.12.10普及模拟】泽泽在埃及
- hdu 1155 Bungee Jumping(物理题——能量守恒)
- 使用WebStorm上传本地项目到GitHub
- poj 3233 Matrix Power Series
- 递归 车票找零 组合数
- bootstrap select multiple
- sdut 1008 最大公共子串(求n个字符串的最长公共子串)lcs
- andriod studio的安装
- 错题总结
- Java的static修饰变量,方法,代码块的初始化顺序
- UVA-514Rails(栈)
- 设计模式入门-单例模式