Pagini recente » Cod sursa (job #72552) | Cod sursa (job #365080) | Monitorul de evaluare | Cod sursa (job #1170537) | Cod sursa (job #201272)
Cod sursa(job #201272)
#include <cstdio>
long long a[3][3], b[3][3];
int x,y,z,n,t;
void mult( long long a[3][3] , long long b[3][3] )
{
long long aux[3][3];
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
aux[i][j] = 0;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
for (int k = 0; k < 3; ++k)
aux[i][j] += (a[i][k]*b[k][j]) % 666013;
for (int i = 0; i < 3; ++i)
for ( int j = 0; j < 3; ++j)
b[i][j] = aux[i][j] % 666013;
}
int main() {
freopen("iepuri.in","rt",stdin);
freopen("iepuri.out","wt",stdout);
for (scanf("%d",&t); t; --t) {
scanf("%d %d %d %d %d %d %d",&x,&y,&z,&a[2][2],&a[2][1],&a[2][0],&n);
a[0][1] = a[1][2] = 1;
b[0][0] = b[1][1] = b[2][2] = 1;
for (long long k = 1; k <= n; k <<= 1) {
if (n & k) mult(a,b);
mult(a,a);
}
printf("%lld\n",(b[0][0]*x + b[0][1]*y + b[0][2]*z) % 666013);
for (int i = 0; i < 3; ++i) for (int j = 0; j < 3; ++j) a[i][j] = b[i][j] = 0;
}
return 0;
}