Pagini recente » Cod sursa (job #1446584) | Cod sursa (job #2076831) | Cod sursa (job #2270239) | Istoria paginii runda/brasov_11_jr | Cod sursa (job #2672287)
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int MOD = 666013;
int M[3][3], a[3][3], MAT[3][3] = {{0, 0, 0}, {1, 0, 0}, {0, 1, 0}};
int X, Y, Z, A, B, C, N;
void multMat(int A[][3], int B[][3])
{
static int C[3][3];
int i, j, q;
for(i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
{
C[i][j] = 0;
for(q = 0; q < 3; ++q)
{
C[i][j] += A[i][q] * B[q][j] % MOD;
C[i][j] %= MOD;
}
}
memcpy(A, C, sizeof(C));
}
void init_I3()
{
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
if(i == j)
a[i][j] = 1;
else a[i][j] = 0;
}
void init()
{
init_I3();
memcpy(M,MAT,sizeof(MAT));
M[0][2] = C;
M[1][2] = B;
M[2][2] = A;
}
void powlg(int p)
{
while(p > 0)
{
if(p & 1)multMat(a, M);
multMat(M, M);
p >>= 1;
}
}
void solve()
{
f >> X >> Y >> Z >> A >> B >> C >> N;
init();
powlg(N - 2);
g << X * a[0][2] + Y * a[1][2] + Z * a[2][2] << '\n';
}
int main()
{
int T;
f >> T;
while(T--)
solve();
return 0;
}