Pagini recente » Cod sursa (job #649339) | Cod sursa (job #1844453) | Cod sursa (job #2947539) | Cod sursa (job #2485661) | Cod sursa (job #1716432)
#include <cstdio>
#include <cstring>
#define LL long long
using namespace std;
const int mod = 666013;
class matrix
{
public:
LL a[3][3];
matrix(){memset(a, 0, sizeof(a));}
void operator *= (const matrix &B)
{
matrix C;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
C.a[i][j]=(C.a[i][j]+a[i][k]*B.a[k][j])%mod;
*this=C;
}
};
matrix lgput(matrix &A, LL b)
{
matrix p;
p.a[0][0] = p.a[1][1] = p.a[2][2] = 1;
while(b)
{
if(b&1)p*=A;
A*=A;
b>>=1;
}
return p;
}
int main()
{
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
int T;
scanf("%d", &T);
while(T--)
{
int k;
int x, y, z, a, b, c;
scanf("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &k);
matrix A;
A.a[1][0] = A.a[2][1] = 1;
A.a[0][2] = c;
A.a[1][2] = b;
A.a[2][2] = a;
A = lgput(A, k);
int val = (x*A.a[0][0]+y*A.a[1][0]+z*A.a[2][0])%mod;
printf("%d\n", val);
}
return 0;
}