Pagini recente » Cod sursa (job #1203284) | Cod sursa (job #498067) | Cod sursa (job #1092363) | Cod sursa (job #2678115) | Cod sursa (job #3169806)
#include <iostream>
#include <fstream>
#define nl '\n'
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
long long int mat[2][4][4], aux[4][4]; /// mat[1] = matricea rezultanta, mat[0] = baza la fiecare pas
long long int X, Y, Z, A, B, C, N;
long long int ans;
void multip(int x, int y)
{
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
for (int k = 1; k <= 3; k++)
{
aux[i][j]+=mat[x][i][k]*mat[y][k][j];
aux[i][j]%=MOD;
}
}
}
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
mat[x][i][j] = aux[i][j];
aux[i][j] = 0;
}
}
return;
}
void binexp(long long int pow)
{
while (pow)
{
if (pow&1)
multip(1, 0);
multip(0, 0);
pow>>=1;
}
return;
}
void solve()
{
ans = 0;
fin >> X >> Y >> Z >> A >> B >> C >> N;
mat[0][1][1] = A;
mat[0][1][2] = B;
mat[0][1][3] = C;
mat[0][2][1] = mat[0][3][2] = 1;
mat[0][2][2] = mat[0][2][3] = mat[0][3][1] = mat[0][3][3] = 0;
for (int i = 1; i <= 3; i++)
for (int j = 1; j <= 3; j++)
mat[1][i][j] = 0;
mat[1][1][1] = mat[1][2][2] = mat[1][3][3] = 1;
binexp(N-2);
ans+=mat[1][1][1]*Z+mat[1][1][2]*Y+mat[1][1][3]*X;
ans%=MOD;
fout << ans << nl;
return;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
fin >> t;
while (t--)
{
solve();
}
return 0;
}