Pagini recente » Cod sursa (job #2080666) | Cod sursa (job #2129009) | Cod sursa (job #1371252) | Cod sursa (job #1601791) | Cod sursa (job #531854)
Cod sursa(job #531854)
#include<stdio.h>
#define Mod 666013
int a[5][5] , s[5][5], c[5][5] ;
int A,B,C,n,T,sol,x,y,z;
void init( int a[5][5] )
{
a[1][1] = a[1][3] = a[2][1] = a[2][2] = 0 ;
a[1][2] = a[2][3] = 1 ;
a[3][1] = C ; a[3][2] = B ; a[3][3] = A ;
}
void unitate( int s[5][5] )
{
s[1][1] = s[2][2] = s[3][3] = 1 ;
s[1][2] = s[1][3] = s[2][1] = s[2][3] = s[3][1] = s[3][2] = 0 ;
}
void mnula( int a[5][5] )
{
a[1][1] = a[1][2] = a[1][3] = a[2][1] = a[2][2] = a[2][3] = a[3][1] = a[3][2] = a[3][3] = 0 ;
}
void copiaza ( int a[5][5], int b[5][5] )
{
int i, j ;
for( i = 1 ; i <= 3 ; i++ )
for( j = 1 ; j <= 3 ; j++ )
a[i][j] = b[i][j] ;
}
void inmulteste ( int a[5][5], int b[5][5] )
{
int i,j,k ;
mnula(c);
for( i = 1 ; i <= 3 ; i++ )
for( j = 1 ; j <= 3 ; j++ )
for( k = 1 ; k <= 3 ; k++ )
{
c[i][j] += ( a[i][k] * b[k][j] % Mod ) ;
if( c[i][j] > Mod ) c[i][j] %= Mod ;
}
}
void lgput( int a[5][5], int b )
{
for( ; b ; b>>=1 )
{
if( b & 1 )
{
inmulteste(s,a);
copiaza(s,c);
}
inmulteste(a,a);
copiaza(a,c);
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&T);
for( ; T ; --T )
{
scanf("%d %d %d %d %d %d %d",&x,&y,&z,&A,&B,&C,&n) ;
init(a);
unitate(s);
lgput(a,n-2);
sol = ( s[3][3] * z % Mod + s[3][2] * y % Mod + s[3][1] * x % Mod ) % Mod ;
printf("%d\n",sol);
}
return 0;
}