Pagini recente » Cod sursa (job #2161545) | Cod sursa (job #2404224) | Cod sursa (job #1384203) | Cod sursa (job #2054959) | Cod sursa (job #2153619)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
#define mod 666013
int t, x, y, z, a, b, c, n;
int mat[3][3], rez[3][3];
/// A = A*B
void mmult (int A[3][3], int B[3][3])
{
int C[3][3];
for (int i=0; i<3; i++) for (int j=0; j<3; j++) C[i][j] = 0;
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
for (int k=0; k<3; k++)
C[i][j] = 1LL* (C[i][j] + (1LL* A[i][k]*B[k][j])%mod) % mod;
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
A[i][j] = C[i][j];
}
void lgput (int p)
{
for (int i=0; i<3; i++) for (int j=0; j<3; j++) rez[i][j]=mat[i][j];
for (; p; p>>=1)
{
if (p&1)
mmult (rez, mat);
mmult (mat, mat);
}
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
mat[i][j] = rez[i][j];
}
int main()
{
fin>>t;
while (t--)
{
fin>>x>>y>>z>>a>>b>>c>>n;
if (n<3)
{
if (n==0) fout<<x<<'\n';
if (n==1) fout<<y<<'\n';
if (n==2) fout<<z<<'\n';
continue;
}
mat[0][0]=0, mat[0][1]=1, mat[0][2]=0;
mat[1][0]=0, mat[1][1]=0, mat[1][2]=1;
mat[2][0]=c, mat[2][1]=b, mat[2][2]=a;
lgput (n-3); /// n-2
long long rez = 1LL * (1LL*mat[2][0]*x%mod + 1LL*mat[2][1]*y%mod + 1LL*mat[2][2]*z%mod) % mod;
fout<<rez%mod<<'\n';
}
return 0;
}