Pagini recente » Cod sursa (job #3241164) | Cod sursa (job #842080) | Cod sursa (job #194627) | Cod sursa (job #1160418) | Cod sursa (job #1298352)
#include<iostream>
#include<fstream>
using namespace std;
long long C[3][3],A[3][3],B[3][3],v[3],D[3][3],E[3][3],S,n;
void inmultire(long long X[3][3], long long Y[3][3])
{
int i,j,nr=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
B[i][j]=X[i][j];
E[i][j]=Y[i][j];
}
}
for(i=0;i<3;i++)
{
C[i][0]=(B[i][0] * E[0][nr] + B[i][1] * E[1][nr] + B[i][2] * E[2][nr])%666013;
C[i][1]=(B[i][0] * E[0][nr+1] + B[i][1] * E[1][nr+1] + B[i][2] * E[2][nr+1])%666013;
C[i][2]=(B[i][0] * E[0][nr+2] + B[i][1] * E[1][nr+2] + B[i][2] * E[2][nr+2])%666013;
}
}
void pow(long long Z[3][3],int n)
{
int i;
if(n==0)
{
for(i=0;i<3;i++)
{
C[i][i]=1;
}
return;
}
if(n%2==0)
{
pow(Z,n/2);
inmultire(Z,Z);
return;
}
else
{
pow(Z,n-1);
inmultire(C,D);
return;
}
}
int main()
{
int i,T,j;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
f>>T;
for(int k=1;k<=T;k++)
{
f>>v[0]>>v[1]>>v[2];
f>>A[0][0]>>A[0][1]>>A[0][2];
A[1][0]=1;
A[2][1]=1;
f>>n;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
D[i][j]=A[i][j];
}
pow(A,n-2);
S=(C[0][0]*v[2]+C[0][1]*v[1]+C[0][2]*v[0])%666013;
g<<S<<endl;
}
g.close();
return 0;
}