Pagini recente » Cod sursa (job #1936775) | Cod sursa (job #1977322) | winners28 | Cod sursa (job #2116916) | Cod sursa (job #590032)
Cod sursa(job #590032)
#include <stdio.h>
#include <string.h>
#define mod 666013
FILE *f=fopen ("iepuri.in", "r");
FILE *g=fopen ("iepuri.out", "w");
int T,x,y,z,n,i,j,v[100];
int A[4][4],B[4][4],sol;
void inmultire (int A[4][4], int B[4][4]) {
int C[4][4];
int i,j,k;
memset (C, 0, sizeof(C));
for (k=1;k<=3;k++)
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
C[k][i]=( C[k][i] + (long long) A[k][j]*B[j][i] )%mod;
memcpy (A, C, sizeof(C));
}
int main() {
fscanf (f, "%d", &T);
for ( ; T ; T--)
{
memset (A, 0, sizeof(A));
fscanf (f, "%d%d%d%d%d%d%d", &A[1][1],&A[1][2],&A[1][3],&x,&y,&z,&n);
A[2][1]=1; A[3][2]=1; memcpy (B, A, sizeof(A)); i=0; n-=2; sol=0;
while (n)
{
v[++i]=n%2;
n/=2;
}
for (j=i-1;j>=1;j--)
{
inmultire (A, A);
if (v[j])
inmultire (A, B);
}
sol=( (long long) x*A[1][1]%mod + (long long) y*A[1][2]%mod + (long long) z*A[1][3]%mod )%mod;
fprintf (g, "%d\n", sol);
}
return 0;
}