Pagini recente » Cod sursa (job #1420783) | Cod sursa (job #3168325) | Cod sursa (job #1225767) | Cod sursa (job #1787123) | Cod sursa (job #1368815)
#include <iostream>
#include <fstream>
#define p 666013
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
void pow(long long A[3][3], long long B[3][3], long long C[3][3]) {
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
C[i][j] = 0;
for(int k = 0; k < 3; k++) {
C[i][j] += (A[i][k] * B[k][j]) % p;
C[i][j] %= p;
}
}
}
}
void cpy(long long A[3][3], long long B[3][3]) {
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
A[i][j] = B[i][j];
}
}
}
int main()
{
int x, y, z, a, b, c, t, i;
long long n;
in >> t;
for(i = 1; i <= t; i++) {
in >> x >> y >> z >> a >> b >> c >> n;
long long A[3][3] = { {a, b, c}, {1, 0, 0}, {0, 1, 0} };
long long r[3][3] = { {1, 0, 0}, {0, 1, 0}, {0, 0, 1} };
long long B[3][3];
n -= 2;
while(n) {
if(n % 2 != 0) {
pow(r, A, B);
cpy(r, B);
}
pow(A, A, B);
cpy(A, B);
n /= 2;
}
out << ((((x * r[0][0]) % p) + y * r[0][1]) % p + z * r[0][2] % p) % p << "\n";
}
in.close();
out.close();
return 0;
}