Pagini recente » Cod sursa (job #3255353) | Cod sursa (job #2600392) | Cod sursa (job #147224) | Cod sursa (job #1662099) | Cod sursa (job #917751)
Cod sursa(job #917751)
#include<fstream>
#define NMAX 4
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long T, n, x[NMAX], A, B, C, a[NMAX][NMAX], p[NMAX][NMAX], aux[NMAX][NMAX], REZ;
void Initializeaza()
{
int i, j;
for (i=1; i<4; ++i)
for (j=1; j<4; ++j) a[i][j]=p[i][j]=0;
p[1][1]=p[2][2]=p[3][3]=a[2][1]=a[3][2]=1;
a[1][3]=C; a[2][3]=B; a[3][3]=A;
}
void Zerorizeaza()
{
int i, j;
for (i=1; i<4; ++i)
for (j=1; j<4; ++j) aux[i][j]=0;
}
void Inmulteste()
{
int i, j, k;
Zerorizeaza();
for (i=1; i<4; ++i)
for (k=1; k<4; ++k)
for (j=1; j<4; ++j)
aux[i][k]=(aux[i][k]+(a[i][j]*p[j][k])%MOD)%MOD;
for (i=1; i<4; ++i)
for (j=1; j<4; ++j) p[i][j]=aux[i][j];
}
void Ridica()
{
int i, j, k;
Zerorizeaza();
for (i=1; i<4; ++i)
for (k=1; k<4; ++k)
for (j=1; j<4; ++j)
aux[i][k]=(aux[i][k]+(a[i][j]*a[j][k])%MOD)%MOD;
for (i=1; i<4; ++i)
for (j=1; j<4; ++j) a[i][j]=aux[i][j];
}
int main()
{
f>>T;
while (T--)
{
f>>x[1]>>x[2]>>x[3]>>A>>B>>C>>n;
n-=2;
Initializeaza();
while (n)
{
if (n%2!=0)
{
--n;
Inmulteste();
}
else
{
n/=2;
Ridica();
}
}
REZ=((x[1]*p[1][3])%MOD+(x[2]*p[2][3])%MOD+(x[3]*p[3][3])%MOD)%MOD;
g<<REZ<<"\n";
}
f.close();
g.close();
return 0;
}