Pagini recente » Cod sursa (job #1554068) | Cod sursa (job #237316) | Cod sursa (job #1794570) | Cod sursa (job #1688031) | Cod sursa (job #531858)
Cod sursa(job #531858)
#include<stdio.h>
#define Mod 666013
#define ll long long
ll a[5][5] , s[5][5], c[5][5] ;
int A,B,C,n,T,sol,x,y,z;
void init( ll 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( ll 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( ll 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 ( ll a[5][5], ll 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 ( ll a[5][5], ll 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] = c[i][j] + ( ( a[i][k] * b[k][j] ) % Mod ) ;
if( c[i][j] > Mod ) c[i][j] %= Mod ;
}
}
void lgput( ll 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;
}