【题目链接】
【算法】
矩阵乘法快速幂,即可
【代码】
#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; }