Pagini recente » Cod sursa (job #467642) | Cod sursa (job #809555) | Cod sursa (job #279758) | Cod sursa (job #2506113) | Cod sursa (job #794526)
Cod sursa(job #794526)
#include<cstdio>
#define MOD 666013
#define maxm 4
long long A[maxm][maxm],B[maxm][maxm],C[maxm][maxm] ;
int x,y,z,a,b,c ;
long long n ;
int t ;
void init_mat()
{
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
A[i][j] = B[i][j] = C[i][j] = 0 ;
A[1][1] = z ; A[2][1] = y ; A[3][1] = x ;
B[1][1] = a ; B[1][2] = b ; B[1][3] = c ;
B[2][1] = B[3][2] = 1 ;
}
void calc(long long n)
{
init_mat () ;
n -= 2 ;
while(n)
{
if( n % 2 )
{
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
for(int k=1;k<=3;++k)
C[i][j] = ( C[i][j] + A[k][j] * B[i][k] ) % MOD ;
for(int i=1;i<=3;++i)
{
for(int j=1;j<=3;++j)
{
A[i][j] = C[i][j] ;
C[i][j] = 0 ;
}
}
}
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
for(int k=1;k<=3;++k)
C[i][j] = ( C[i][j] + B[i][k] * B[k][j] ) % MOD ;
for(int i=1;i<=3;++i)
{
for(int j=1;j<=3;++j)
{
B[i][j] = C[i][j] ;
C[i][j] = 0 ;
}
}
n /= 2 ;
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
++t ;
while( --t )
{
scanf("%d%d%d%d%d%d%lld",&x,&y,&z,&a,&b,&c,&n);
calc ( n ) ;
printf("%lld\n",A[1][1]);
}
return 0 ;
}