您的位置:首页 > 其它

【洛谷P3390】 矩阵快速幂(模板)

2017-02-11 21:39 246 查看
贴一下矩阵快速幂的模板

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>

using namespace std;
typedef long long ll;
const ll mod=1e9+7;
struct hp{
ll a[110][110];
}con;
ll n;
ll ans[110][110];
inline hp work(hp a,hp b)
{
hp c;
memset(c.a,0,sizeof(c.a));
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
for (int k=1;k<=n;k++)
c.a[i][j]=(c.a[i][j]+(a.a[i][k]*b.a[k][j])%mod)%mod;
return c;
}
inline hp fpow(hp a,ll p)
{
hp ans=con;
for (;p;p>>=1,a=work(a,a))
if (p&1)
ans=work(ans,a);
return ans;
}
int main()
{
ll k;
cin>>n>>k;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
cin>>con.a[i][j];
con=fpow(con,k-1);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
cout<<con.a[i][j]<<' ';
cout<<endl;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: