Pagini recente » Cod sursa (job #423207) | Cod sursa (job #1410162) | Cod sursa (job #2911030) | Cod sursa (job #1686167) | Cod sursa (job #2842988)
#include <fstream>
#include <iostream>
#include <algorithm>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int NMAX = 3;
int v[NMAX][NMAX];
int copie[NMAX][NMAX];
int puteri[NMAX][NMAX];
int sum[NMAX][NMAX];
void solve(int copie[NMAX][NMAX], int v[NMAX][NMAX], int sum[NMAX][NMAX]) {
int i, j, k, n;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++) {
sum[i][j] = 0;
for (k = 0; k < 3; k++)
sum[i][j] = ((sum[i][j] % MOD) + 1LL * copie[i][k] * v[k][j]) % MOD;
}
}
void schimb(int copie[NMAX][NMAX], int v[NMAX][NMAX]) {
int i, j;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
copie[i][j] = v[i][j];
}
void power(int n) {
int i, j;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
puteri[i][j] = 0;
puteri[0][0] = 1;
puteri[1][1] = 1;
puteri[2][2] = 1;
while (n) {
if (n % 2 == 1) {
solve(puteri, copie, v);
schimb(puteri, v);
}
n = n / 2;
solve(copie, copie, v);
schimb(copie, v);
}
}
void cleart(int copie[NMAX][NMAX]) {
int i, j;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
copie[i][j] = 0;
copie[1][0] = 1;
copie[2][1] = 1;
}
int main() {
int t, s, x, y, z, a, b, c, i, j, n;
long long s1, s2, s3;
fin >> t;
for (i = 1; i <= t; i++) {
fin >> x >> y >> z >> a >> b >> c >> n;
cleart(copie);
copie[2][2] = a;
copie[1][2] = b;
copie[0][2] = c;
power(n - 2);
s1 = 1LL * x * puteri[0][2];
s2 = 1LL * y * puteri[1][2];
s3 = 1LL * z * puteri[2][2];
s = (s1 + s2 + s3) % MOD;
fout << s << "\n";
}
return 0;
}