Pagini recente » Cod sursa (job #1608154) | Cod sursa (job #2616031) | Cod sursa (job #1875757) | Cod sursa (job #1920649) | Cod sursa (job #1792606)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream ka("iepuri.in");
ofstream ki("iepuri.out");
const int MOD = 666013;
int tt;
long long x, y, z, a, b, c, n;
long long sol[3][3], orig[3][3], temp_sol[3][3];
long long aia[3], sol_fin[3];
void raise_to_power(int t)
{
if(t > 1)
{
raise_to_power(t / 2);
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
temp_sol[i][j] = 0;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
for(int z = 0; z < 3; z++)
temp_sol[i][j] += (sol[i][z] * sol[z][j]) % MOD;
temp_sol[i][j] %= MOD;
}
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
sol[i][j] = temp_sol[i][j];
if(t % 2 == 1)
{
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
temp_sol[i][j] = 0;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
for(int z = 0; z < 3; z++)
temp_sol[i][j] += (sol[i][z] * orig[z][j]) % MOD;
temp_sol[i][j] %= MOD;
}
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
sol[i][j] = temp_sol[i][j];
}
}
}
int main()
{
ka >> tt;
while(tt--)
{
ka >> x >> y >> z >> c >> b >> a >> n;
sol[0][0] = 0;
sol[0][1] = 0;
sol[0][2] = a;
sol[1][0] = 1;
sol[1][1] = 0;
sol[1][2] = b;
sol[2][0] = 0;
sol[2][1] = 1;
sol[2][2] = c;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
orig[i][j] = sol[i][j];
n -= 2;
raise_to_power(n);
long long aia[3] = {x, y, z};
long long fin[3] = {0, 0 ,0};
for(int j = 0; j < 3; j++)
{
for(int kl = 0; kl < 3; kl++)
fin[j] += (aia[kl] * sol[kl][j]) % MOD;
fin[j] %= MOD;
}
ki << fin[2] << '\n';
}
}