Pagini recente » Cod sursa (job #2198183) | Cod sursa (job #2058012) | Cod sursa (job #1677835) | Cod sursa (job #1033608) | Cod sursa (job #895329)
Cod sursa(job #895329)
#include<cstdio>
#define ll long long
#define m 666013
using namespace std;
ll h[3][3],sol[3][3],h3[3][1];
int pas,x,y,z,a,b,c,n;
inline void im(ll A[][3],ll B[][3], ll C[][3] )
{for(register int i=0;i<3;++i)
for(register int j=0;j<3;++j)
{C[i][j]=0;
for(register int k=0;k<3;++k)
C[i][j]=(C[i][j]+(A[i][k]*B[k][j])%m)%m;
}
}
inline void put(ll A[][3], ll p)
{for (;p;p>>=1)
{if ( p&1 ) im(h,A,A);
im(h,h,h);
}
}
int main()
{freopen("iepuri.in","rt",stdin);
freopen("iepuri.out","wt",stdout);
scanf("%d",&pas);
for(;pas--;)
{scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
h[0][0]=a; h[0][1]=b; h[0][2]=c; h[1][0]=h[2][1]=1;
h[1][1]=h[1][2]=h[2][0]=h[2][2]=0;
h3[0][0]=a*z+b*y+c*x;
h3[1][0]=z; h3[2][0]=y;
put(sol,n-2);
printf("%lld\n", sol[0][0]*h3[0][0] + sol[0][1] * h3[1][0] + sol[0][2] * h3[2][0]);
}
}