Pagini recente » Cod sursa (job #112299) | Cod sursa (job #135986) | Cod sursa (job #2665601) | Cod sursa (job #1780590) | Cod sursa (job #2129990)
#include <bits/stdc++.h>
#define modulo 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int t, n, x, y, z, a, b, c, p[7][7], prod[7][7], v[7][7];
void Curat(int mat[7][7])
{
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
mat[i][j] = 0;
}
void Inmultire()
{
Curat(p);
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++){
int s = 0;
for(int k = 1; k <= 3; k++)
s += (1LL * prod[i][k] * v[k][j]);
p[i][j] = s % modulo;
}
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
prod[i][j] = p[i][j];
}
void Inmultire2()
{
Curat(p);
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++){
int s = 0;
for(int k = 1; k <= 3; k++)
s += (1LL * v[i][k] * v[k][j]);
p[i][j] = s % modulo;
}
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
v[i][j] = p[i][j];
}
void Ridicare()
{
Curat(prod);
prod[1][1] = prod[2][2] = prod[3][3] = 1;
while(n)
{
if(n % 2)
Inmultire();
n /= 2;
Inmultire2();
}
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
v[i][j] = prod[i][j];
}
void Curatare()
{
Curat(v);
v[2][1] = 1;
v[3][2] = 1;
v[1][3] = c;
v[2][3] = b;
v[3][3] = a;
}
void Citire()
{
fin >> t;
for(int i = 1; i <= t; i++)
{
fin >> x >> y >> z >> a >> b >> c >> n;
n -= 2;
Curatare();
Ridicare();
fout << (1LL * x * v[1][3] + 1LL * y * v[2][3] + 1LL * z * v[3][3]) << "\n";
}
}
int main()
{
Citire();
return 0;
}