Pagini recente » Cod sursa (job #2863552) | Cod sursa (job #1936987) | Cod sursa (job #137007) | Cod sursa (job #3151231) | Cod sursa (job #365586)
Cod sursa(job #365586)
#include <fstream.h>
#define RRR 666013
long long ABC[4][4],ABCN[4][4];
void init();
void pow(long long n);
void AxB(long long A[4][4],long long B[4][4]);
int main()
{
long long i,n,t,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)%RRR+(ABCN[1][2]*y)%RRR+(ABCN[1][3]*z)%RRR;
if(x>=RRR) x%=RRR;
out<<x<<'\n';
}
in.close(); out.close();
return 0;
}
void init()
{
long long i,j;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j) ABCN[i][j]=ABC[i][j]=0;
}
void pow(long long 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])
{
long long i,j,C[4][4];
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
{
C[i][j]=(A[i][1]*B[1][j])%RRR+(A[i][2]*B[2][j])%RRR+(A[i][3]*B[3][j])%RRR;
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];
}