Pagini recente » Borderou de evaluare (job #2022659) | Borderou de evaluare (job #1662893) | Borderou de evaluare (job #1566784) | Borderou de evaluare (job #2982921) | Cod sursa (job #1905432)
#include<fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long mi[4][4];
long long MOD=666013;
int iepuri(long long x, long long y, long long z,int p){
long long cmi[4][4],rmi[4][4],mmi[4][4];
int i,j,k;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++){
if(i==j)cmi[i][j]=1;
else cmi[i][j]=0;
mmi[i][j]=mi[i][j];
rmi[i][j]=0;
}
while(p){
if(p&1){
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
rmi[i][j]=(rmi[i][j]+cmi[i][k]*mmi[k][j])%MOD;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++){cmi[i][j]=rmi[i][j];rmi[i][j]=0;}
}
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
rmi[i][j]=(rmi[i][j]+mmi[i][k]*mmi[k][j])%MOD;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++){mmi[i][j]=rmi[i][j];rmi[i][j]=0;}
p>>=1;
}
return (x*cmi[1][3]+y*cmi[2][3]+z*cmi[3][3])%MOD;
}
int main(){
int x,y,z,a,b,c,n,t;
fin>>t;
mi[2][1]=1;mi[3][2]=1;
for(int i=1;i<=t;i++){
fin>>x>>y>>z>>a>>b>>c>>n;
mi[1][3]=c;mi[2][3]=b;mi[3][3]=a;
fout<<iepuri(x,y,z,n-2)<<'\n';
}
return 0;
}