Pagini recente » Cod sursa (job #153577) | Cod sursa (job #572580) | Monitorul de evaluare | Cod sursa (job #1788586) | Cod sursa (job #987369)
Cod sursa(job #987369)
#include<stdio.h>
#include<string.h>
#define MOD 666013
int a,b,c,x,y,z;
class Matrix {
public:
int 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 (int val){
memset(m,0,sizeof(m));
}
Matrix operator * (Matrix other) {
int 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);
int n,tc;
scanf("%d",&tc);
while(tc) {
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
Matrix M;
M = lgPow(M,n-2);
printf("%d\n",x * M.m[3][1] + y * M.m[3][2] + z * M.m[3][3]);
tc--;
}
return 0;
}