Pagini recente » Cod sursa (job #3348574) | Cod sursa (job #221829) | Cod sursa (job #3343776) | Cod sursa (job #1607231) | Cod sursa (job #3337749)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
long mod = 666013;
void mult(int a[3][3], int b[3][3]) {
int 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] += (1LL * a[i][k] * b[k][j]) % mod;
}
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
a[i][j] = c[i][j];
}
}
}
void exp(int base[3][3], int N, int ans[3][3]) {
while (N) {
if (N % 2 == 0) {
mult(base, base);
N /= 2;
} else {
mult(ans, base);
N--;
}
}
}
int solve(int mat[3][3], int x, int y, int z, int N) {
int res[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
res[i][j] = (i == j);
}
}
exp(mat, N - 2, res);
return(((1LL*x*res[0][2])%mod+(1LL*y*res[1][2])%mod)%mod+(1LL*z*res[2][2])%mod)%mod;
}
int main() {
int n;
in>>n;
int mat[3][3];
for (int i=0;i<n;i++) {
int x,y,z,a,b,c,N;
in>>x>>y>>z>>a>>b>>c>>N;
mat[0][0]=0;
mat[0][1]=0;
mat[1][0]=1;
mat[1][1]=0;
mat[2][0]=0;
mat[2][1]=1;
mat[0][2]=c;
mat[1][2]=b;
mat[2][2]=a;
out<<solve(mat,x,y,z,N)<<"\n";
}
return 0;
}