Pagini recente » Cod sursa (job #134268) | Cod sursa (job #914027) | Cod sursa (job #240248) | Cod sursa (job #1443201) | Cod sursa (job #1457683)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int modd = 666013;
long long sol[4][4], A[4][4], p[4][4];
void mpy (long long a[][4], long long b[][4], long long 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){
long long 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 << (x * sol[0][0] + y * sol[0][1] + z * sol[0][2]) % modd << "\n";
}
return 0;
}