HTML & JS
#include <bits/stdc++.h>
using namespace std;

#define MOD 1000000007
#define N 50

int t,n,m,i,j;
int arr[N][N];
int I[N][N];
        
void mul(int a[][N],int b[][N],int brr[][N],int m)
{
    int i,j,sum,k;
    int res[m][m];
    
    for(i=0;i<m;i++)
        for(j=0;j<m;j++)
            res[i][j]=0;
    
    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
        {
            for(k=0;k<m;k++)
            {
                res[i][j]=((res[i][j]%MOD) + (a[i][k]%MOD)*(b[k][j]%MOD))%MOD;
            }
            
        }
    }
    
    for(i=0;i<m;i++)
        for(j=0;j<m;j++)
            brr[i][j]=res[i][j];
}

int main() 
{
    cin>>t;
    
    while(t--)
    {
        cin>>m>>n;
        
        for(i=0;i<m;i++)
            for(j=0;j<m;j++)
            {
                if(i==j) 
                    I[i][j]=1;
                else 
                    I[i][j]=0;
            }
        
        for(i=0;i<m;i++)
            for(j=0;j<m;j++)
                cin>>arr[i][j];    
        
        while(n)
        {
            if( n%2!=0 )
            {
                mul(I,arr,I,m);
                n--;
            }
            else
            {
                mul(arr,arr,arr,m);
                n/=2;
            }    
            
        }
        
        for(i=0;i<m;i++)
        {    
            for(j=0;j<m;j++)
            {    
                cout<<I[i][j]<<" ";
            }
            cout<<"\n";
        }
        
    }
	
	return 0;
}

Generated URL:

Output:

1 0 
3 1 
17 112 116 
15 88 100 
28 144 160 
Report Bug