Pagini recente » Cod sursa (job #1002058) | Cod sursa (job #1736663) | Cod sursa (job #1962431) | Cod sursa (job #120891) | Cod sursa (job #365590)
Cod sursa(job #365590)
#include <fstream.h>
#define RRR 666013
long long ABC[4][4],ABCN[4][4];
void init();
void pow(int n);
void AxB(long long A[4][4],long long B[4][4]);
int main()
{
short i,t;
int n;
long long x,y,z;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
in>>t;
for(i=1;i<=t;++i)
{
init();
in>>x>>y>>z;
in>>ABC[3][3]>>ABC[3][2]>>ABC[3][1]; ABC[1][2]=ABC[2][3]=1;
in>>n; pow(n);
x=ABCN[1][1]*x+ABCN[1][2]*y+ABCN[1][3]*z;
if(x>=RRR) x%=RRR;
out<<x<<'\n';
}
in.close(); out.close();
return 0;
}
void init()
{
short i,j;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j) ABCN[i][j]=ABC[i][j]=0;
}
void pow(int n)
{
ABCN[1][1]=ABCN[2][2]=ABCN[3][3]=1;
while(n>0)
{
if(n&1==1){ AxB(ABCN,ABC); --n; }
AxB(ABC,ABC);
n>>=1;
}
}
void AxB(long long A[4][4],long long B[4][4])
{
short i,j;
long long C[4][4];
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
{
C[i][j]=A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3][j];
if(C[i][j]>=RRR) C[i][j]%=RRR;
}
for(i=1;i<=3;++i)
for(j=1;j<=3;++j) A[i][j]=C[i][j];
}