Ejemplo n.º 1
0
void Main()
{
	if (N<3)
	{
		puts("1");
		return ;
	}
	Matrix m;
	m.Clean();
	m.d[0][0]=A%7;
	m.d[0][1]=B%7;
	m.d[1][0]=1;
	m=PowM(m,N-2);
	int Ans=m.d[0][0]+m.d[0][1];
	Ans%=7;
	printf("%d\n",Ans);
//	printf("{ {%d %d}\n  {%d %d}}\n",m.d[0][0],m.d[0][1],m.d[1][0],m.d[1][1]);
}
Ejemplo n.º 2
0
int main(int argc, char *argv[])
{
    setIO("sample");
    int64 T =gi;
    while(T--)
    {
     n = gi; k = gi;flag = 0;
     for(int64 i = 1;i<=n;++i)
      for(int64 j = 1;j<=n;++j)
       m.a[i][j] = gi;
      mat a;
      PowM(a,k-1);
      int64 ans = 0;
      for(int64 i = 1;i<=n;++i)
       ans += a.a[i][i],ans%=mod;
      printf(I64D,ans);puts("");
    }
    closeIO();
    return EXIT_SUCCESS;
}