| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:感觉写的很清晰In Reply To:感觉写的很清晰 Posted by:shenkuangji at 2012-07-04 20:58:00 > 解法二 700K 141MS
> #include<cstdio>
> #include<iostream>
> using namespace std;
> int k,n,base;
> struct matrix
> {
> int n;
> int m[33][33];
> void clear()
> {
> for (int i=1;i<=n;i++)
> for (int j=1;j<=n;j++)
> m[i][j]=0;
> }
> void in(int t)
> {
> n=t;
> for (int i=1;i<=n;i++)
> for (int j=1;j<=n;j++)
> scanf("%d",&m[i][j]);
> }
> void out()
> {
> for (int i=1;i<=n;i++)
> {
> for (int j=1;j<n;j++)
> printf("%d ",m[i][j]);
> printf("%d\n",m[i][n]);
> }
> }
> void operator +=(const matrix &b)
> {
> for (int i=1;i<=n;i++)
> for (int j=1;j<=n;j++)
> m[i][j]=(m[i][j]+b.m[i][j])%base;
> }
> }a,b,f;
> matrix operator *(const matrix &a,const matrix &b)
> {
> matrix c;
> c.n=n;
> c.clear();
> for (int i=1;i<=n;i++)
> for (int j=1;j<=n;j++)
> for (int k=1;k<=n;k++)
> c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%base;
> return c;
> }
> int main()
> {
> scanf("%d%d%d",&n,&k,&base);
> a.in(n);
> b=a;
> f=a;
> int i;
> for (i=0;(1<<i)<=k;i++);
> for (i-=2;i>=0;i--)
> {
> f+=b*f;
> b=b*b;
> if (((1<<i)&k)>0) b=b*a,f+=b;
> }
> f.out();
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator