Pagini recente » Cod sursa (job #1805847) | Profil Karpatokorzoje | Cod sursa (job #1813846) | Cod sursa (job #706570) | Cod sursa (job #987374)
Cod sursa(job #987374)
#include<stdio.h>
#include<string.h>
#define MOD 666013
long long a,b,c,x,y,z;
class Matrix {
public:
long long m[5][5];
Matrix () {
memset(m,0,sizeof(m));
m[1][2]=m[2][3]=1;
m[3][1]=c;
m[3][2]=b;
m[3][3]=a;
}
Matrix (long long val){
memset(m,0,sizeof(m));
}
Matrix operator * (Matrix other) {
long long i,j,k;
Matrix res(0);
for(i = 1 ; i < 4 ;i++)
for(j = 1 ; j < 4 ;j++)
for(k = 1 ; k < 4 ; k++)
res.m[i][j] = (res.m[i][j] + (m[i][k] * other.m[k][j]) % MOD) % MOD;
return res;
}
};
Matrix lgPow (Matrix a, int p) {
if(p == 1) return a;
if(p & 1)
return a * lgPow(a,p-1);
Matrix jum;
jum=lgPow(a,p / 2);
return jum * jum;
}
int main () {
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
long long n,tc;
scanf("%lld",&tc);
while(tc) {
scanf("%lld%lld%lld%lld%lld%lld%lld",&x,&y,&z,&a,&b,&c,&n);
Matrix M;
M = lgPow(M,n-2);
printf("%lld\n",((x * M.m[3][1]) % MOD + (y * M.m[3][2]) % MOD + (z * M.m[3][3]) % MOD) % MOD);
tc--;
}
return 0;
}