Pagini recente » Cod sursa (job #2071548) | Cod sursa (job #3180469) | Cod sursa (job #1420160) | Cod sursa (job #1936141) | Cod sursa (job #1736997)
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
using namespace std;
int mat[3][3];
int sol[3][3];
void mult (int a[][3], int b[][3], int c[][3])
{
for (int i = 0; i <= 2; i++)
{
for (int j = 0; j <= 2; j++)
{
for (int k = 0; k <= 2; k++)
{
c[i][j] = (c[i][j] + a[i][k] * b[k][j] * 1LL) % 666013;
}
}
}
}
void lg_power (int p)
{
int aux[3][3];
memset(sol, 0, sizeof(sol));
sol[0][0] = 1;
sol[1][1] = 1;
sol[2][2] = 1;//matr unitate
for (int i = 0; (1<<i) <= p; i++)
{
if ((1<<i) & p)
{
memset(aux, 0, sizeof(aux));
mult (mat, sol, aux);
memcpy (sol, aux, sizeof(aux));
}
memset (aux, 0, sizeof(aux));
mult (mat, mat, aux);
memcpy (mat, aux, sizeof(aux));
}
}
int main()
{
freopen ("iepuri.in", "r", stdin);
freopen ("iepuri.out", "w", stdout);
int x,y,z,a,b,c,n;
int t;
cin>>t;
for (int i = 1; i <= t;i++)
{
cin>>x>>y>>z>>a>>b>>c>>n;
mat[0][0] = a;
mat[1][0] = b;
mat[2][0] = c;
mat[0][1] = 1;
mat[1][1] = 0;
mat[2][1] = 0;
mat[0][2] = 0;
mat[1][2] = 1;
mat[2][2] = 0;
//cout<<"n: "<<n<<endl;
lg_power(n-2);
long long aux = (((long long)sol[0][0] * (long long)z)%666013 + ((long long)sol[1][0] * (long long)y)%666013
+ ((long long) sol[2][0] * (long long)x)%666013);
aux = aux % 666013;
cout<<aux<<"\n";
}
}