【题目链接】
【算法】
矩阵乘法快速幂,即可
【代码】
#include<bits/stdc++.h>
using namespace std;
int a,b,n;
struct Matrix
{
int mat[3][3];
} ans;
inline void multipy(Matrix &a,Matrix b)
{
int i,j,k;
Matrix ans;
ans.mat[1][1] = ans.mat[1][2] = ans.mat[2][1] = ans.mat[2][2] = 0;
for (i = 1; i <= 2; i++)
{
for (j = 1; j <= 2; j++)
{
for (k = 1; k <= 2; k++)
{
ans.mat[i][j] = (ans.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % 7;
}
}
}
a = ans;
}
inline Matrix power(Matrix a,int n)
{
Matrix ans,b = a;
ans.mat[1][1] = 1; ans.mat[1][2] = 0;
ans.mat[2][1] = 0; ans.mat[2][2] = 1;
while (n)
{
if (n & 1) multipy(ans,b);
n >>= 1;
multipy(b,b);
}
return ans;
}
int main()
{
while (scanf("%d%d%d",&a,&b,&n) != EOF)
{
if (!a && !b && !n) break;
if (n <= 2)
{
printf("%d\n",1);
continue;
}
ans.mat[1][1] = a; ans.mat[1][2] = b;
ans.mat[2][1] = 1; ans.mat[2][2] = 0;
ans = power(ans,n-2);
printf("%d\n",(ans.mat[1][1]+ans.mat[1][2])%7);
}
return 0;
}