Pagini recente » Cod sursa (job #1389742) | Profil ioana_ionita97 | Cod sursa (job #2857005) | Istoria paginii runda/moisil2011/clasament | Cod sursa (job #589834)
Cod sursa(job #589834)
#include<stdio.h>
const int R=666013;
long long nr[5],T[5][5],tn[5][5];
void el(long long x){
int i,j,k;
long long ax[5][5],a1[5][5];
for(i=0;i<5;++i){
tn[i][i]=1;
for(j=0;j<5;++j){
ax[i][j]=T[i][j];
a1[i][j]=0;
}
}
while(x){
if(x&1){
for(k=1;k<5;++k){
for(i=1;i<5;++i){
for(j=1;j<5;++j)
a1[i][j]+=tn[i][k]*ax[k][j];
}
}
for(i=1;i<5;++i){
for(j=1;j<5;++j){
tn[i][j]=a1[i][j]%R;
a1[i][j]=0;
}
}
}
for(k=1;k<5;++k){
for(i=1;i<5;++i){
for(j=1;j<5;++j)
a1[i][j]+=ax[i][k]*ax[k][j];
}
}
for(i=1;i<5;++i){
for(j=1;j<5;++j){
ax[i][j]=a1[i][j]%R;
a1[i][j]=0;
}
}
x>>=1;
}
}
long long calc(long long x){
int i,j;
long long ss=0;
for(i=0;i<5;++i){
for(j=0;j<5;++j)
tn[i][j]=0;
}
el(x);
for(i=1;i<5;++i)
ss+=nr[i]*tn[i][4];
return ss%R;
}
int main(){
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
long long a,b,c,x,y,z,N,t;
scanf("%lld",&t);
for(;t;--t){
scanf("%lld%lld%lld%lld%lld%lld%lld",&x,&y,&z,&a,&b,&c,&N);
nr[1]=x;
nr[2]=y;
nr[3]=z;
T[2][1]=T[3][2]=1;
T[1][3]=T[1][4]=c;
T[2][3]=T[2][4]=b;
T[3][3]=T[3][4]=a;
printf("%lld\n",calc(N-2));
}
fclose(stdin);
fclose(stdout);
return 0;
}