Pagini recente » Cod sursa (job #2193269) | Cod sursa (job #226280) | Cod sursa (job #446541) | Cod sursa (job #869724) | Cod sursa (job #2027846)
#include <bits/stdc++.h>
using namespace std;
int i,j,k,x,y,z,q,t,l,m,o,w,r,p;
long long a[4][4],n[4][4];
void multiply(long long a[4][4],long long b[4][4])
{
int c[3][3];
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
c[i][j]=0;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(q=1;q<=3;q++)
c[i][j]+=(a[i][q]*b[q][j])%666013;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
a[i][j]=c[i][j]%666013;
}
void pow(long long a[4][4],int k,long long n[4][4])
{
while(k)
{
if(k%2)
{
multiply(n,a);
k--;
}
multiply(a,a);
k/=2;
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
for(l=1;l<=t;l++)
{
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&m,&w,&r,&k);
for(o=1;o<=3;o++)
for(p=1;p<=3;p++)
if(o==p) n[o][p]=1;
else
n[o][p]=0;
a[1][1]=0;
a[2][1]=1;
a[3][1]=0;
a[1][2]=0;
a[2][2]=0;
a[3][2]=1;
a[1][3]=r;
a[2][3]=w;
a[3][3]=m;
pow(a,k,n);
printf("%lld\n",(n[1][1]*x+n[2][1]*y+n[3][1]*z)%666013);
}
return 0;
}