Pagini recente » Cod sursa (job #1366545) | Cod sursa (job #1406713) | Cod sursa (job #278428) | Cod sursa (job #1041069) | Cod sursa (job #2855851)
#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 m1[5][5], long long int m2[5][5]) {
long long int aux[5][5];
setZero(aux);
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
for (int k = 1; k <= 3; k++)
aux[i][j] = (aux[i][j] + (m1[i][k] * m2[k][j]) % MOD) % MOD;
}
}
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++)
a[i][j] = aux[i][j];
}
}
void getPower(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 ;
}
if (power % 2 == 0) {
getPower(power / 2);
multiplyMatrix(a, a);
} else {
getPower(power - 1);
multiplyMatrix(a, one);
}
}
void printAnswer(long long int a[5][5], int x, int y, int z) {
long long 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(n - 2);
printAnswer(a, x, y, z);
}
return 0;
}