Pagini recente » Cod sursa (job #2629152) | Cod sursa (job #597462) | Cod sursa (job #686501) | Cod sursa (job #1019762) | Cod sursa (job #2871715)
#include <bits/stdc++.h>
using namespace std;
void multiply_matrix_3x3(int a[3][3], int b[3][3], int mod, int result[3][3]) {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
result[i][j] = 0;
}
}
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 3; ++k) {
result[i][j] = (1LL * result[i][j] + 1LL * a[i][k] * b[k][j] % mod)
% mod;
}
}
}
}
void fast_matrix_pow_3x3(int base_matrix[3][3], int exponent, int mod, int result[3][3]) {
if (exponent == 0) {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
if (i == j) {
result[i][j] = 1;
} else {
result[i][j] = 0;
}
}
}
return;
}
int result2[3][3] = {0};
fast_matrix_pow_3x3(base_matrix, exponent / 2, mod, result2);
if (exponent % 2 == 0) {
multiply_matrix_3x3(result2, result2, mod, result);
} else {
multiply_matrix_3x3(result2, result2, mod, result);
int result_copy[3][3];
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
result_copy[i][j] = result[i][j];
}
}
multiply_matrix_3x3(base_matrix, result_copy, mod, result);
}
}
int main(void) {
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
int t;
cin >> t;
for (int i = 0; i < t; ++i) {
int x, y, z;
cin >> x >> y >> z;
int a, b, c, n;
cin >> a >> b >> c >> n;
// d day: a*(iepuri[d-1]) + b*(iepuri[d-2])
// + c*(iepuri[d-3])
// [a b c * [iepuri_(d-1) = [iepuri_d
// 1 0 0 iepuri_(d-2) iepuri_(d-1)
// 0 1 0] iepuri_(d-3)] iepuri_(d-2)]
int mod = 666013;
int matrix[3][3] = {{a, b, c}, {1, 0, 0}, {0, 1, 0}};
int result[3][3] = {0};
fast_matrix_pow_3x3(matrix, (n-2), mod, result);
cout << (1LL * result[0][0] * z
+ 1LL * result[0][1] * y
+ 1LL * result[0][2] * x) % mod << '\n';
}
return 0;
}