Pagini recente » Cod sursa (job #131812) | Cod sursa (job #982624) | Cod sursa (job #1847880) | Cod sursa (job #858748) | Cod sursa (job #2047428)
#include <bits/stdc++.h>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int mod = 666013;
struct matrice {
int a, b, c, d, e, f, g, h, i;
matrice() { // 0 1 0
a = 0; // 0 0 1
b = 1; // 0 0 0
c = 0;
d = 0;
e = 0;
f = 1;
g = 0;
h = 0;
i = 0;
}
};
matrice M;
matrice produs(matrice A, matrice B)
{
matrice C;
C.a = (A.a * B.a + A.b * B.d + A.c * B.g) % mod;
C.b = (A.a * B.b + A.b * B.e + A.c * B.h) % mod;
C.c = (A.a * B.c + A.b * B.f + A.c * B.i) % mod;
C.d = (A.d * B.a + A.e * B.d + A.f * B.g) % mod;
C.e = (A.d * B.b + A.e * B.e + A.f * B.h) % mod;
C.f = (A.d * B.c + A.e * B.f + A.f * B.i) % mod;
C.g = (A.g * B.a + A.h * B.d + A.i * B.g) % mod;
C.h = (A.g * B.b + A.h * B.e + A.i * B.h) % mod;
C.i = (A.g * B.c + A.h * B.f + A.i * B.i) % mod;
return C;
}
matrice putere(matrice A, long long n)
{
if(n == 0)
return M;
if(n == 1)
return A;
if(n % 2 == 0) {
return putere(produs(A, A), n / 2);
}
else {
return produs(A, putere(produs(A, A), n / 2));
}
}
int main()
{
int T;
f >> T;
for(int i = 1; i <= T; ++i) {
int x, y, z, a, b ,c ,n;
f >> x >> y >> z >> a >> b >> c >> n;
M.g = c;
M.h = b;
M.i = a;
matrice sol = putere(M, n - 2);
long long ans = sol.g * x + sol.h * y + sol.i * z;
g << ans << '\n';
}
return 0;
}