Pagini recente » Cod sursa (job #1674522) | Cod sursa (job #1046122) | Cod sursa (job #615686) | Cod sursa (job #789428) | Cod sursa (job #3143227)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
void addSelf(int &a, int b) {
a += b;
if(a >= MOD) {
a -= MOD;
}
}
void multSelf(int &a, int b) {
a = (long long) a * b % MOD;
}
int mult(int a, int b) {
multSelf(a, b);
return a;
}
vector<vector<int>> mult(const vector<vector<int>> &a, const vector<vector<int>> &b) {
vector<vector<int>> c(a.size(), vector<int> (b.front().size()));
for(int i = 0; i < (int) a.size(); i++) {
for(int k = 0; k < (int) b.size(); k++) if(a[i][k] != 0) {
for(int j = 0; j < (int) b.front().size(); j++) {
addSelf(c[i][j], mult(a[i][k], b[k][j]));
}
}
}
return c;
}
vector<vector<int>> lgpow(vector<vector<int>> a, int b) {
vector<vector<int>> c(a.size(), vector<int> (a.front().size()));
for(int i = 0; i < (int) c.size(); i++) {
c[i][i] = 1;
}
while(b) {
if(b & 1) {
c = mult(c, a);
}
a = mult(a, a);
b >>= 1;
}
return c;
}
void solve() {
int x, y, z, a, b, c, n;
fin >> x >> y >> z >> a >> b >> c >> n;
vector<vector<int>> A(1, vector<int>(3));
A[0] = {x, y, z};
vector<vector<int>> B(3, vector<int>(3));
B[1][0] = B[2][1] = 1;
B[0][2] = c;
B[1][2] = b;
B[2][2] = a;
B = lgpow(B, n);
A = mult(A, B);
fout << A[0][0] << '\n';
}
int main() {
int tc;
fin >> tc;
while(tc--) {
solve();
}
return 0;
}