伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

快速幂和矩阵快速幂

来源:本站原创 浏览:125次 时间:2021-10-13

转载:快速幂和矩阵快速幂-模板

快速幂的思想就是减少相乘的次数,将原本n-1次的相乘减小到(lg(n))的复杂度;

a^b=(a^2)^(b/2)

这个式子由于/是整除,所以得分奇偶的不同情况,偶数时仍然成立,奇数时需要再乘上一个a;

所以快速幂就是将原本的以a为基本单位的连乘改成以a*a为单位的连乘;

代码: 

 1 #include 2 #include 3 #include 4 #define ll long long  5 using namespace std; 6 ll quickpow(ll a,ll n,ll mod)//计算的大多是要对mod; 7 { 8     int ans=1; 9     while(n)10     {11         if(n&1)12             ans=ans*a%mod;13         a=a*a%mod;14         b/=2;15     }16     return ans;17 }18 int main()19 {20     int a,b,mod;21     cin>>a>>b>>mod;22     int ans=quickpow(a,b,mod);23     cout<<ans<<endl;24     return 0;25 }

矩阵的快速幂是在这个的思想的基础上的,对矩阵进行更新;

 

题目背景

矩阵快速幂

题目描述

给定n*n的矩阵A,求A^k

输入输出格式

输入格式:

第一行,n,k

第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素

输出格式:

输出A^k

共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的元素,每个元素模10^9+7

输入输出样例

输入样例#1: 

2 11 11 1

输出样例#1: 

1 11 1
说明

n<=100, k<=10^12, |矩阵元素|<=1000 算法:矩阵快速幂

 

代码:

 

 1 #include 2 #define il inline 3 #define ll long long 4 using namespace std; 5 const int mod=1e9+7; 6 ll n,k; 7 struct mat{ll a[102][102],r,c;}; 8 il mat mul(mat x,mat y) 9 {10     mat p;11     memset(&p,0,sizeof(p));12     p.r=x.r,p.c=y.c;13     for(int i=0;����,����i<x.r;i++)14         for(int j=0;j<y.c;j++)15             for(int k=0;k<x.c;k++)16     p.a[i][j]=(p.a[i][j]+x.a[i][k]*y.a[k][j])%mod;17     return p;18 }19 il ll gi()20 {21     ll a=0;char x=getchar();bool f=0;22     while((x<'0'||x>'9')&&x!='-')x=getchar();23     if(x=='-')x=getchar(),f=1;24     while(x>='0'&&x<='9')a=a*10+x-48,x=getchar();25     return f?-a:a;26 }27 int main()28 {29     ios::sync_with_stdio(0);30     n=gi(),k=gi();31     mat p,ans;32     p.r=p.c=ans.r=ans.c=n;33     for(int i=0;i<n;i++)34         for(int j=0;j<n;j++)p.a[i][j]=gi(),ans.a[i][j]=p.a[i][j];35     k--;36     while(k)37     {38         if(k&1)ans=mul(ans,p);39         k>>=1;40         p=mul(p,p);41     }42     for(int i=0;i<n;i++){43         for(int j=0;j<n;j++)cout<<ans.a[i][j]<<' ';44         cout<<endl;45     }46     return 0;47 }

 

 

 

不懂的可以点这里

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net