Pagini recente » Cod sursa (job #2999143) | Cod sursa (job #2540029) | Cod sursa (job #1689640) | Cod sursa (job #931343) | Cod sursa (job #1805457)
#include <cstdio>
#include <cstring>
#define MOD 666013
#define MAX_N 2
#define MAX_M 4
#define MAX_P 4
using namespace std;
long long mat[MAX_M][MAX_P];
int x, y, z;
void matrixMultiplication(long long a[MAX_N][MAX_M], long long b[MAX_M][MAX_P]){
long long c[MAX_N][MAX_P], i, j, k;
for (i=0; i<MAX_N; i++)
for (j=0; j<MAX_P; j++){
c[i][j]=0;
for (k=0; k<MAX_M; k++)
c[i][j]=(c[i][j] + 1LL*a[i][k]*b[k][j]) % MOD;
}
memcpy(a, c, sizeof(c));
}
void lgput(long long n){
long long ans[MAX_N][MAX_M];
ans[0][0]=z;
ans[0][1]=y;
ans[0][2]=x;
while (n){
if (n&1)
matrixMultiplication(ans, mat);
matrixMultiplication(mat, mat);
n=n>>1;
}
printf("%lld\n", ans[0][0]);
}
int main(){
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
int t, q, a, b, c, k;
scanf("%d", &t);
for (q=1; q<=t; q++){
scanf("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &k);
mat[0][0]=a; mat[0][1]=1; mat[0][2]=0;
mat[1][0]=b; mat[1][1]=0; mat[1][2]=1;
mat[2][0]=c; mat[2][1]=0; mat[2][2]=0;
lgput(k-2);
}
return 0;
}