Pagini recente » Cod sursa (job #683515) | Cod sursa (job #2164082) | Cod sursa (job #332627) | Cod sursa (job #711765) | Cod sursa (job #1862735)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
long long A[4][4],B[4][4],C[4][4],D[4][4],t,nr,p,k,i,j,x,y,z,a,b,c,n,s;
int init () {
A[1][1]=a;
A[1][2]=b;
A[1][3]=c;
A[2][1]=1;
A[2][2]=0;
A[2][3]=0;
A[3][1]=0;
A[3][2]=1;
A[3][3]=0;
memcpy(B,A,sizeof(A));
}
int inmultire () {
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++){
C[i][j]+=A[i][k]*B[k][j]%666013;
C[i][j]%=666013;
}
}
int init2 () {
D[1][1]=1;
D[1][2]=0;
D[1][3]=0;
D[2][1]=0;
D[2][2]=1;
D[2][3]=0;
D[3][1]=0;
D[3][2]=0;
D[3][3]=1;
}
int reset () {
C[1][1]=0;
C[1][2]=0;
C[1][3]=0;
C[2][1]=0;
C[2][2]=0;
C[2][3]=0;
C[3][1]=0;
C[3][2]=0;
C[3][3]=0;
}
int main () {
fin>>nr;
for(s=1;s<=nr;s++){
fin>>x>>y>>z>>a>>b>>c>>t;
init();
reset();
init2();
t-=2;
while(t>0){
p=1;
if(t==1){
memcpy(A,D,sizeof(D));
inmultire();
t--;
memcpy(D,C,sizeof(C));
}
else{
while(p*2<=t){
reset();
inmultire();
memcpy(A,C,sizeof(C));
memcpy(B,C,sizeof(C));
p*=2;
}
t-=p;
memcpy(A,C,sizeof(C));
memcpy(B,D,sizeof(C));
reset();
inmultire();
memcpy(D,C,sizeof(C));
reset();
init();
}
}
memcpy(A,D,sizeof(C));
reset();
B[1][1]=z,B[2][1]=y,B[3][1]=x;
for(i=1;i<=3;i++)
for(k=1;k<=3;k++){
C[i][1]+=A[i][k]*B[k][1]%666013;
C[i][1]%=666013;
}
C[1][1]%=666013;
fout<<C[1][1]<<"\n";
init();
init2();
reset();
}
}