Pagini recente » Cod sursa (job #2695919) | Cod sursa (job #1258838) | Cod sursa (job #852417) | Cod sursa (job #2589844) | Cod sursa (job #1613396)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
const int mod = 666013;
int k, T, X, Y, Z, a, b, c, i1, i, j, q, sol, A[4][4], B[4][4], Zc[4][4];
void pat (int x)
{
memset (B, 0, sizeof B);
if (x==1)
{
for(i=1; i<=3; i++)
{
for(j=1; j<=3; j++)
{
for(q=1; q<=3; q++)
{
B[i][j]=(B[i][j]+1LL*A[i][q]*A[q][j]%mod)%mod;
}
}
}
}
else if (x==0)
{
for(i=1; i<=3; i++)
{
for(j=1; j<=3; j++)
{
for(q=1; q<=3; q++)
{
B[i][j]=(B[i][j]+1LL*A[i][q]*Zc[q][j]%mod)%mod;
}
}
}
}
memcpy (A, B, sizeof A);
}
void exp (int k)
{
if (k==1);
else if (k%2==0) {exp(k/2); pat(1);}
else {exp(k-1); pat(0);}
}
int main()
{
fin >> T;
for (i1=1; i1<=T; i1++)
{
fin >> X >> Y >> Z >> a >> b >> c >> k;
A[1][1]=A[1][2]=A[2][2]=A[3][1]=Zc[1][1]=Zc[1][2]=Zc[2][2]=Zc[3][1]=0; A[2][1]=A[3][2]=Zc[2][1]=Zc[3][2]=1; A[1][3]=Zc[1][3]=c; A[2][3]=Zc[2][3]=b; A[3][3]=Zc[3][3]=a;
exp(k-2);
sol=(1LL*X*A[1][3]%mod+1LL*Y*A[2][3]%mod+1LL*Z*A[3][3]%mod)%mod;
fout << sol << "\n";
}
}