Beispiel #1
0
Matrix PowM(Matrix m,int N)
{
	if (N==1) return m;
	Matrix t;
	t.Clean();
	t=PowM(m,N>>1);
	t.Minus(t);
	if (N&1) t.Minus(m);
	return t;
}
Beispiel #2
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]);
}