Pagini recente » Profil Ruxandra985 | Biathlon | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1214740)
#include <cstdio>
#include <cstring>
using namespace std;
const long long mod=666013;
void openIOFiles()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
}
long long Z[5][5],S[5][5],aux[5][5],Sol[5][5];
long long a,b,c,x,y,z,n,i,t,j,exp;
int main(){
openIOFiles();
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
Z[1][1]=0; Z[1][2]=0; Z[1][3]=c;
Z[2][1]=1; Z[2][2]=0; Z[2][3]=b;
Z[3][1]=0; Z[3][2]=1; Z[3][3]=a;
S[1][1]=x; S[1][2]=y; S[1][3]=z;
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) Sol[i][j]=Z[i][j];
exp=n-3;
while(exp){
if (exp%2){
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) aux[i][j]=(Sol[i][1]*Z[1][j]+Sol[i][2]*Z[2][j]+Sol[i][3]*Z[3][j])%mod;
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) Sol[i][j]=aux[i][j];
--exp;
}
else {
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) aux[i][j]=(Z[i][1]*Z[1][j]+Z[i][2]*Z[2][j]+Z[i][3]*Z[3][j])%mod;
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) Z[i][j]=aux[i][j];
exp/=2;
}
}
printf("%lld\n",(S[1][1]*Sol[1][3]+S[1][2]*Sol[2][3]+S[1][3]*Sol[3][3])%mod);
memset(aux,0,sizeof aux);
}
return 0;
}