Pagini recente » Cod sursa (job #1287045) | Cod sursa (job #525628) | Cod sursa (job #1788171) | Cod sursa (job #2027891) | Cod sursa (job #2601355)
#include <bits/stdc++.h>
using namespace std;
#define modulo 666013
ifstream in("iepuri.in");
ofstream out("iepuri.out");
void multiplyMatrix(long long ans[4][4], long long b[4][4]) {
long long temp[4][4];
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++) {
temp[i][j] = 0;
for(int k = 1; k <= 3; k++) {
temp[i][j] = (ans[i][k] * b[k][j] + temp[i][j]) % modulo;
}
}
}
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++) {
ans[i][j] = temp[i][j];
///cout << ans[i][j] << ' ';
}
}
}
void lgput(long long ans[4][4], long long n) {
long long r[4][4];
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++) {
if(i == j) {
r[i][j] = 1;
} else {
r[i][j] = 0;
}
}
}
while(n) {
if(n & 1) {
multiplyMatrix(r, ans);
}
multiplyMatrix(ans, ans);
n /= 2;
}
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++) {
ans[i][j] = r[i][j];
}
}
}
void prepAns(long long ans[4][4], long long A, long long B, long long C) {
ans[1][1] = ans[1][2] = 0, ans[1][3] = C;
ans[2][1] = 1, ans[2][2] = 0, ans[2][3] = B;
ans[3][1] = 0, ans[3][2] = 1, ans[3][3] = A;
}
int main()
{
long long T, X, Y, Z, A, B, C, N;
in >> T;
for(int ti = 1; ti <= T; ti++) {
in >> X >> Y >> Z >> A >> B >> C >> N;
long long ans[4][4];
prepAns(ans, A , B , C);
lgput(ans, N);
out << ((X * ans[1][1] + Y * ans[2][1] + Z * ans[3][1]) % modulo) << endl;;
}
return 0;
}