Pagini recente » Cod sursa (job #2918859) | Cod sursa (job #1688579) | Cod sursa (job #1677040) | Cod sursa (job #36998) | Cod sursa (job #3159122)
#include <fstream>
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
const int dim = 3, mod = 666013;
void copy_matrix(int A[dim][dim], int B[dim][dim]) {
for (int i = 0; i < dim; i++)
for (int j = 0; j < dim; j++)
A[i][j] = B[i][j];
}
void matrix_multiplication(int A[dim][dim], int B[dim][dim], int rez[dim][dim]) {
for (int i = 0; i < dim; i++)
for (int j = 0; j < dim; j++)
rez[i][j] = 0;
for (int i = 0; i < dim; i++)
for (int j = 0; j < dim; j++)
for (int k = 0; k < dim; k++)
rez[i][j] = (rez[i][j] + 1ll * A[i][k] * B[k][j]) % mod;
}
void fast_exponentiation(int A[dim][dim], int ans[dim][dim], int exp) {
int base[dim][dim];
copy_matrix(base, A), copy_matrix(ans, A);
exp--;
while (exp) {
if ((exp & 1) != 0)
matrix_multiplication(ans, base, A), copy_matrix(ans, A);
matrix_multiplication(base, base, A), copy_matrix(base, A);
exp >>= 1;
}
}
void solve() {
int x, y, z, a, b, c, n;
cin >> x >> y >> z >> a >> b >> c >> n;
int A[dim][dim] = { {a, b, c}, {1, 0, 0}, {0, 1, 0} }, X[] = { z, y, x }, ans[dim][dim];
fast_exponentiation(A, ans, n - dim + 1);
int xn = 0;
for (int k = 0; k < dim; k++)
xn = (xn + 1ll * ans[0][k] * X[k]) % mod;
cout << xn << "\n";
}
int main() {
int t;
cin >> t;
while (t--)
solve();
}