Pagini recente » Cod sursa (job #2826554) | Cod sursa (job #1761710) | Cod sursa (job #2934843) | Cod sursa (job #1966669) | Cod sursa (job #2155141)
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
ifstream f ("iepuri.in");
ofstream g ("iepuri.out");
long long i,j,a,b,c,x,y,z,mat[4][4],cop[4][4],matrice[4][4],s,q,t,n;
void ridicLaPatrat()
{
for(i = 1;i <= 3;i++)
for(j = 1;j <= 3;j++)
cop[i][j] = mat[i][j];
for(i = 1;i <= 3;i++)
for(j = 1;j <= 3;j++)
{
s = 0;
for(q = 1;q <= 3;q++)
s = (s + (cop[i][q]*cop[q][j]) % mod) % mod;
mat[i][j] = s;
}
}
void inmultescMatrici()
{
for(i = 1;i <= 3;i++)
for(j = 1;j <= 3;j++)
{
s = 0;
for(q = 1;q <= 3;q++)
s = (s + (mat[i][q] * matrice[q][j])%mod)%mod;
cop[i][j] = s;
}
for(i = 1;i <= 3;i++)
for(j = 1;j <= 3;j++)
matrice[i][j] = cop[i][j];
}
void init()
{
mat[1][1] = a ; mat[1][2] = b ; mat[1][3] = c;
mat[2][1] = 1 ; mat[2][2] = 0 ; mat[2][3] = 0;
mat[3][1] = 0 ; mat[3][2] = 1 ; mat[3][3] = 0;
for(i = 1;i <= 3;i++)
for(j = 1;j <= 3;j++)
if(i == j)
matrice[i][j] = 1;
else
matrice[i][j] = 0;
}
void lgput(int p)
{
init();
while(p)
{
if(p % 2 == 0)
ridicLaPatrat() , p /= 2;
else inmultescMatrici(),p--;
}
}
int main()
{
f >> t;
while(t)
{
f >> x >> y >> z >> a >> b >> c >> n;
lgput(n - 2);
g << ( (matrice[1][1] * z) %mod + ( matrice[1][2] * y) % mod + (matrice[1][3] * x)%mod) % mod << '\n';
t--;
}
return 0;
}