Pagini recente » Borderou de evaluare (job #2802783) | Cod sursa (job #1563903) | Borderou de evaluare (job #2023104) | Cod sursa (job #8684) | Cod sursa (job #2128513)
#include <bits/stdc++.h>
#define Mod 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int T,m[4][4],q[4][4],p[4][4];
int a,b,c,x,y,z,n;
void Inmultire(int x[4][4],int y[4][4],int s[4][4])
{
int i,j,k,aux;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{
aux=0;
for(k=1;k<=3;k++)
aux+=(x[i][k]*y[k][j])%Mod;
s[i][j]=aux%Mod;
}
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
x[i][j]=s[i][j];
}
void Lgput(int n)
{
while(n)
{
if(n%2)Inmultire(p,m,q);
Inmultire(m,m,q);
n/=2;
}
}
void Initializare()
{
m[1][1]=0;
m[1][2]=0;
m[1][3]=c;
m[2][1]=1;
m[2][2]=0;
m[2][3]=b;
m[3][1]=0;
m[3][2]=1;
m[3][3]=a;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
if(i==j)p[i][j]=1;
else p[i][j]=0;
}
int main()
{
fin>>T;
while(T--)
{
fin>>x>>y>>z>>a>>b>>c>>n;
Initializare();
Lgput(n-2);
fout<<1LL*(x*p[1][3]%Mod+y*p[2][3]%Mod+z*p[3][3])%Mod<<"\n";
}
return 0;
}