Pagini recente » Cod sursa (job #2793707) | Cod sursa (job #657759) | Cod sursa (job #1061761) | Cod sursa (job #2523578) | Cod sursa (job #3140005)
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
#define int long long
const int MOD=666013;
int mod(int n) {
return (n%MOD+MOD)%MOD;
}
using mat = array<array<int,3>,3>;
void display(mat m) {
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) cout<<m[i][j]<<" ";
cout<<endl;
}
cout<<endl;
}
mat mult(mat a, mat b) {
mat c{};
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
for (int k=0; k<3; ++k) c[i][k] = mod(c[i][k] + a[i][j] * b[j][k]%MOD);
}
}
return c;
}
void binpow(mat& res, mat& m, int n) {
while (n) {
if (n&1) res = mult(res, m);
m = mult(m, m);
n >>= 1;
}
}
signed main() {
int t;
fin>>t;
while (t--) {
int x, y, z, a, b, c, n;
fin>>x>>y>>z>>a>>b>>c>>n;
assert(n >= 3);
mat m{};
m[0][2] = c;
m[1][2] = b;
m[2][2] = a;
m[1][0] = 1;
m[2][1] = 1;
mat res{};
res[0][0] = x;
res[1][1] = y;
res[2][2] = z;
binpow(res, m, n-2);
fout<<mod(res[0][2] + res[1][2] + res[2][2])<<endl;
}
}