Pagini recente » Cod sursa (job #250081) | Cod sursa (job #742303) | Cod sursa (job #318731) | Cod sursa (job #75522) | Cod sursa (job #3197619)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
int M[3][3]; int K; int n;
int Sol[1][3];
int a,b,c,x,y,z;
void Multiply(int A[3][3], int B[3][3])
{
long long C[3][3];
for(int i = 0; i < 3 ; ++i)
for(int j = 0; j < 3; ++j)
{
C[i][j] = 0;
for(int k = 0; k < 3; ++k)
C[i][j] += 1LL * A[i][k] * B[k][j];
C[i][j] %= MOD;
}
for(int i = 0; i < 3 ; ++i)
for(int j = 0; j < 3; ++j)
for(int k = 0; k < 3; ++k)
A[i][j] = C[i][j];
}
void Multiply2(int A[1][3], int B[3][3])
{
long long C[1][3];
for(int i = 0; i < 1 ; ++i)
for(int j = 0; j < 3; ++j)
{
C[i][j] = 0;
for(int k = 0; k < 3; ++k)
C[i][j] += 1LL * A[i][k] * B[k][j];
C[i][j] %= MOD;
}
for(int i = 0; i < 1 ; ++i)
for(int j = 0; j < 3; ++j)
A[i][j] = C[i][j];
}
void read()
{
fin>>x>>y>>z>>a>>b>>c;
fin >> K;
}
void refresh()
{
for(int i=0;i<3;i++)
Sol[0][i]=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
M[i][j]=0;
M[0][2] = c; M[1][2] = b; M[2][2] = a;
M[1][0]= M[2][1]=1;
Sol[0][0] = x; Sol[0][1] = y; Sol[0][2] = z;
}
int main()
{
fin>>n;
while(n--)
{
read();
refresh();
while(K)
{
if(K % 2 == 1)
Multiply2(Sol,M);
Multiply(M,M);
K = K / 2;
}
fout << Sol[0][0] << "\n";
}
return 0;
}