Pagini recente » Cod sursa (job #112423) | Cod sursa (job #579122) | Cod sursa (job #964319) | Cod sursa (job #861265) | Cod sursa (job #2121220)
#include <cstdio>
#include <cstring>
using namespace std;
int x, y, z, a, b, c, n, t;
int d[4][4], S[4][4];
const int MOD = 666013;
inline void inm(int A[][4], int B[][4], int C[][4]){
for(int i = 0; i < 3 ; ++i)
for(int j = 0; j < 3 ; ++j)
for(int k = 0; k < 3 ; ++k)
C[i][j] = (C[i][j] + 1LL * A[i][k] * B[k][j]) % MOD;
}
inline void lg(int n){
int aux[4][4];
for(int i = 0; (1LL * 1 << i) <= n ; ++i){
if((n & (1 << i))){
memset(aux, 0, sizeof(aux));
inm(S, d, aux);
memcpy(S, aux, sizeof(aux));
}
memset(aux, 0, sizeof(aux));
inm(d, d, aux);
memcpy(d, aux, sizeof(aux));
}
}
int main()
{
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d", &t);
while(t--){
scanf("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &n);
d[0][0] = 0; d[0][1] = 0; d[0][2] = c;
d[1][0] = 1; d[1][1] = 0; d[1][2] = b;
d[2][0] = 0; d[2][1] = 1; d[2][2] = a;
S[0][0] = x; S[0][1] = y; S[0][2] = z;
lg(n - 2);
printf("%d\n", S[0][2]);
}
return 0;
}