Pagini recente » Cod sursa (job #2377823) | Cod sursa (job #2947088) | Cod sursa (job #1412509) | Cod sursa (job #591429) | Cod sursa (job #1136201)
#include <fstream>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
long long p[5][5],m[5][5],C[5][5],sol;
int a,b,c,x,y,z,n,t,i,j,k;
void inmulteste ( long long p[5][5], long long m[5][5], long long C[5][5] ) {
int i,j,k;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
C[i][j]=0;
for (i=1;i<=3;i++) {
for (j=1;j<=3;j++)
for (k=1;k<=3;k++) {
C[i][j]+=((p[i][k])*(m[k][j]))%666013;
C[i][j]%=666013;
}
}
}
void copiaza(long long a[5][5], long long b[5][5]){
for (int i=1;i<=3;i++)
for (int j=1;j<=3;j++)
b[i][j]=a[i][j];
}
int main () {
fin>>t;
while (t--) {
fin>>x>>y>>z;
fin>>a>>b>>c>>n;
for (i=1;i<=3;i++){
for (j=1;j<=3;j++)
p[i][j]=0;
p[i][i]=1;
}
m[1][1]=a;
m[1][2]=b;
m[1][3]=c;
m[2][1]=m[3][2]=1;
m[2][2]=m[2][3]=m[3][1]=m[3][3]=0;
n-=2;
while (n!=0) {
if (n%2==1) {
inmulteste (p,m,C);
copiaza (C,p);
}
inmulteste (m,m,C);
copiaza (C,m);
n/=2;
}
sol=((p[1][1]*z)%666013 +(p[1][2]*y)%666013 + (p[1][3]*x)%666013)%666013;
fout<<sol<<"\n";
}
return 0;
}