Pagini recente » Cod sursa (job #1107286) | Cod sursa (job #1345437) | Cod sursa (job #1369220) | Cod sursa (job #1027689) | Cod sursa (job #2488973)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long x,y,z,A,B,C,n,i,j,l,m;
struct matrix{
long long mat[5][5];
}k;
const matrix null={
{{1,0,0},
{0,1,0},
{0,0,1}}
};
matrix inm(matrix a,matrix b){
matrix rez;
int s;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
s=0;
for(l=0;l<3;l++){
s=(s+(a.mat[i][l]*b.mat[l][j])%MOD)%MOD;
}
rez.mat[i][j]=s;
}
}
return rez;
}
matrix pow(matrix a, int n ){
if(n<=0) return null;
if(n%2==1) return inm(a,pow(inm(a,a),n/2));
return pow(inm(a,a),n/2);
}
int main()
{
f>>n;
while(n!=0){ n--;
f>>x>>y>>z>>A>>B>>C>>m;
for(i=0;i<3;i++)
for(j=0;j<3;j++){
if(j==0) {
if(i==0) k.mat[i][j]=A;
else
if(i==1) k.mat[i][j]=B;
else k.mat[i][j]=C;
}
else
if(j==i+1) k.mat[i][j]=1;
else k.mat[i][j]=0;
}
if(m>3){
k=pow(k,m-2);
g<<((z*k.mat[0][0])%MOD+(y*k.mat[1][0])%MOD+(x*k.mat[2][0])%MOD)%MOD;
} else
if(m==1) g<<x;
else
if(m==2) g<<y;
else
if(m==3) g<<z;
g<<'\n';
}
return 0;
}