Pagini recente » Cod sursa (job #1851467) | Cod sursa (job #2179875) | Cod sursa (job #3124140) | Cod sursa (job #11968) | Cod sursa (job #2855841)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int questions, x, y, z, A, B, C, n;
long long int a[5][5], one[5][5];
void setZero(long long int a[5][5]) {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++)
a[i][j] = 0;
}
}
void setOne(long long int ones[5][5], int a, int b, int c) {
one[1][1] = 0;
one[1][2] = 0;
one[1][3] = a;
one[2][1] = 1;
one[2][2] = 0;
one[2][3] = b;
one[3][1] = 0;
one[3][2] = 1;
one[3][3] = c;
}
void multiplyMatrix(long long int a[5][5], long long int b[5][5], long long int c[5][5]) {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
for (int t = 1; t <= 3; t++)
a[i][j] = (a[i][j] + (b[i][t] * c[t][j]) % MOD) % MOD;
}
}
}
void getPower(long long int a[5][5], int power) {
if (power == 1) {
for (int i = 1; i <= 3; i++)
for (int j = 1; j <= 3; j++)
a[i][j] = one[i][j];
return ;
}
long long int logMatrix[5][5];
long long int b[5][5];
setZero(logMatrix);
setZero(b);
getPower(logMatrix, power / 2);
multiplyMatrix(b, logMatrix, logMatrix);
if (power % 2 == 0) {
for (int i = 1; i <= 3; i++)
for (int j = 1; j <= 3; j++)
a[i][j] = b[i][j];
return ;
}
multiplyMatrix(a, logMatrix, b);
}
void printAnswer(long long int a[5][5], int x, int y, int z) {
int answer = 0;
long long int v[] = {0, x, y, z};
for (int j = 1; j <= 3; j++) {
answer = (answer + (v[j] * a[j][3]) % MOD) % MOD;
}
g << answer << "\n";
}
int main()
{
f >> questions;
while (questions--) {
f >> x >> y >> z >> C >> B >> A >> n;
setZero(a);
setOne(one, A, B, C);
getPower(a, n - 2);
printAnswer(a, x, y, z);
}
return 0;
}