Pagini recente » Cod sursa (job #1771111) | Cod sursa (job #3241726) | Cod sursa (job #1745665) | Cod sursa (job #773993) | Cod sursa (job #3158189)
#include <fstream>
std::ifstream fin("iepuri.in");
std::ofstream fout("iepuri.out");
const int kMod = 666013;
long long mat[2][3][3];
void multiply (int first, int second) {
long long help[3][3] = {};
for (int i = 0; i < 3; i += 1)
for (int j = 0; j < 3; j += 1)
for (int k = 0; k < 3; k += 1) {
help[i][j] += (1LL * mat[first][i][k] * mat[second][k][j]) % kMod;
help[i][j] %= kMod;
}
for (int i = 0; i < 3; i += 1)
for (int j = 0; j < 3; j += 1)
mat[first][i][j] = help[i][j];
}
void solve () {
for (int i = 0; i < 3; i += 1)
for (int j = 0; j < 3; j += 1)
mat[0][i][j] = mat[1][i][j] = 0;
int x, y, z; fin >> x >> y >> z;
fin >> mat[0][2][2] >> mat[0][2][1] >> mat[0][2][0];
int n; fin >> n; n -= 2;
for (int i = 0; i < 3; i += 1)
mat[1][i][i] = 1;
for (int i = 0; i < 2; i += 1)
mat[0][i][i + 1] = 1;
while (n > 0) {
if (n & 1)
multiply (1, 0);
multiply (0, 0);
n >>= 1;
}
fout << (1LL * mat[1][2][0] * x % kMod + 1LL * mat[1][2][1] * y % kMod
+ 1LL * mat[1][2][2] * z % kMod) % kMod << '\n';
}
int main () {
int testCases; fin >> testCases;
while (testCases > 0)
solve (), testCases -= 1;
fin.close (), fout.close ();
return 0;
}