Cod sursa(job #790867)
#include<stdio.h>
using namespace std;
#define MOD 666013
long long A[4][4], B[4][4], C[4][4], n;
int a, b, c, x, y, z, t, i, j, k;
FILE *fis = fopen ("iepuri.in", "r");
FILE *fis2 = fopen ("iepuri.out", "w");
void read ()
{
fscanf(fis, "%d %d %d %d %d %d %lld", &x, &y, &z, &a, &b, &c, &n);
for(i = 1; i <= 3; ++i)
for(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] = 1, B[3][2] = 1;
}
void write ()
{
fprintf(fis2, "%d\n", A[1][1]);
}
void solve ()
{
n -= 2;
while ( n )
{
if ( n % 2 )
{
for ( i = 1; i <= 3; i ++ )
for ( j = 1; j <= 3; j ++ )
for ( k = 1; k <= 3; k ++ )
C[i][j] += A[k][j] * B[i][k], C[i][j] %= MOD;
for ( i = 1; i <= 3; i ++ )
for ( j = 1; j <= 3; j ++ )
A[i][j] = C[i][j], C[i][j] = 0;
}
for ( i = 1; i <= 3; i ++ )
for ( j = 1; j <= 3; j ++ )
for ( k = 1; k <= 3; k ++ )
C[i][j] += B[i][k] * B[k][j], C[i][j] %= MOD;
for ( i = 1; i <= 3; i ++ )
for ( j = 1; j <= 3; j ++ )
B[i][j] = C[i][j], C[i][j] = 0;
n /= 2;
}
}
int main ()
{
fscanf(fis, "%d\n", &t);
while (t)
{
read();
solve();
write();
t--;
}
fclose(fis);
fclose(fis2);
return 0;
}