Pagini recente » Cod sursa (job #1778756) | Cod sursa (job #1699787) | Cod sursa (job #1833908) | Cod sursa (job #929792) | Cod sursa (job #1457682)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int modd = 666013;
int sol[4][4], A[4][4], p[4][4];
void mpy (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]) % modd;
}
int main(){
ifstream cin ("iepuri.in");
ofstream cout ("iepuri.out");
int t;
cin >> t;
for (; t; -- t){
int x , y , z , a , b , c , n;
cin >> x >> y >> z >> a >> b >> c >> n;
memset(p , 0 , sizeof(p));
memset(sol , 0, sizeof(sol));
memset(A,0,sizeof(A));
p[0][1] = p[1][2] = 1,
p[2][0] = c , p[2][1] = b , p[2][2] = a;
for (int it = 0 ; it < 3 ; ++ it)
sol[it][it] = 1;
for (; n; n >>= 1){
if (n & 1){
memset(A, 0, sizeof(A)),
mpy(p , sol , A),
memcpy(sol , A , sizeof(A));
}
memset(A , 0 , sizeof(A));
mpy(p, p, A);
memcpy(p , A, sizeof(A));
}
cout << (1LL * x * sol[0][0] + y * sol[0][1] + z * sol[0][2]) % modd << "\n";
}
return 0;
}