二分法+快速幂POJ 3233
来源:互联网 发布:python 人工智能 开发 编辑:程序博客网 时间:2024/04/29 13:55
#include <stdio.h>#include <string.h>long long q;int n,m;struct xxx{long long p[35][35];}sum,x,e,s;xxx ddd(xxx a,xxx b) //矩阵相乘{int i,j,k;xxx ans;for(i=0;i<n;i++){for(j=0;j<n;j++){ans.p[i][j]=0;for(k=0;k<n;k++)ans.p[i][j]+=a.p[i][k]*b.p[k][j];}}for(i=0;i<n;i++)for(j=0;j<n;j++)ans.p[i][j]=ans.p[i][j]%m;return ans;}xxx add(xxx a,xxx b) //矩阵相加{int i,j;xxx ans;for(i=0;i<n;i++)for(j=0;j<n;j++)ans.p[i][j]=(a.p[i][j]+b.p[i][j])%m;return ans;}xxx solve(long long q){int i,j;if(q==1)return x;if(q%2==0) //幂为偶数{xxx temp;temp=solve(q/2);sum=ddd(sum,add(temp,e));x=ddd(x,x);return x;}else //幂为奇数{xxx temp;temp=solve(q/2);sum=ddd(sum,add(temp,e));temp=ddd(temp,temp);temp=ddd(temp,s);sum=add(sum,temp);x=temp;return x;}}int main(){int i,j,k;while(scanf("%d%I64d%d",&n,&q,&m)!=-1){for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%I64d",&x.p[i][j]);sum=x;s=x;for(i=0;i<n;i++){for(j=0;j<n;j++){if(i==j)e.p[i][j]=1;elsee.p[i][j]=0;}}x=solve(q);for(i=0;i<n;i++){for(j=0;j<n;j++){if(j==0)printf("%I64d",sum.p[i][j]);elseprintf(" %I64d",sum.p[i][j]);}printf("\n");}}return 0;}
0 0
- 二分法+快速幂POJ 3233
- POJ 3233 Matrix Power Series 矩阵快速幂 + 二分法
- 矩阵快速幂+二分法
- 二分法求快速幂
- 二分法求快速幂
- POJ 1845 Sumdiv(质因数分解+快速幂+二分法求等比数列的和)
- POJ_3233_Matrix Power_矩阵快速幂/二分法
- POJ 3233 矩阵快速幂
- poj 3233 矩阵快速幂
- poj 3233 矩阵快速幂
- poj 3233(矩阵快速幂)
- poj 3233 矩阵快速幂
- POJ 3233 矩阵快速幂
- poj 3233(矩阵快速幂)
- POJ 3233(矩阵快速幂)
- POJ 3233 矩阵快速幂
- 二分法、快速排序
- 二分法快速查找算法
- 最小生成树 prime算法
- 『java』java中的一些标签示例
- 线段树单点更新
- 怎么样才算作弊搜索引擎
- Android L liblog
- 二分法+快速幂POJ 3233
- Android ListView那些事
- 最短路径之 floyd (适用于 多点距离)
- K-means聚类算法
- 控件CCtrlList的虚拟列表使用方法--详解
- VS2010/MFC入门编程二十(radio botton 的使用)
- 百度指数邀请码有没有?
- 快速幂POJ 1061
- 如果音乐网站因为版权问题而被关闭,那FLASH站点该怎么办?