Pagini recente » Cod sursa (job #364835) | Cod sursa (job #453790) | Cod sursa (job #1131391) | Cod sursa (job #3182571) | Cod sursa (job #1667544)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int mod = 666013;
long long t, x, y, z, a, b, c, n;
long long sol[5][5], m[5][5], aux[5][5];
void Inmult(long long a1[5][5], long long a2[5][5])
{
for(int i = 0; i <= 2; i++)
{
for(int j = 0; j <= 2; j++)
{
for(int k = 0; k <= 2; k++)
{
aux[i][j] = (aux[i][j]+a1[i][k]*a2[k][j]) % mod;
}
}
}
for(int i = 0; i <= 2; i++)
for(int j = 0; j <= 2; j++)
a1[i][j] = aux[i][j];
}
void putere(long long p)
{
while(p)
{
if(p%2) Inmult(sol,m);
memset(aux,0,sizeof(aux));
Inmult(m,m);
memset(aux,0,sizeof(aux));
p = p/2;
}
}
int main()
{
f>>t;
while(t--)
{
memset(sol,0,sizeof(sol));
f>>x>>y>>z>>a>>b>>c>>n;
m[0][0] = 0; m[0][1] = 0; m[0][2] = c;
m[1][0] = 1; m[1][1] = 0; m[1][2] = b;
m[2][0] = 0; m[2][1] = 1; m[2][2] = a;
sol[1][1] = sol[0][0] = sol[2][2] = 1;
putere(n-2);
g<<(x*sol[0][2] + y*sol[1][2] + z*sol[2][2]*1LL)%mod<<'\n';
}
return 0;
}