Pagini recente » Cod sursa (job #2781333) | Cod sursa (job #754417) | Cod sursa (job #2190650) | Cod sursa (job #2511856) | Cod sursa (job #872144)
Cod sursa(job #872144)
#include<fstream>
using namespace std;
#define mod 666013
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long *putere(long long *a, int p);
long long *inmultire( long long *a, long long *b );
int main()
{
int x, y, z, a, b, c, n, t;
long long *m = new long long[9];
fin >> t;
for( int i = 1; i <= t; ++i )
{
fin >> x >> y >> z >> a >> b >> c >> n;
m[1] = m[3] = m[4] = m[5] = 0;
m[2] = m[6] = 1;
m[7] = c;
m[8] = b;
m[9] = a;
m = putere(m, n-2);
fout << ((m[7]*x)%mod + (m[8]*y)%mod + (m[9]*z)%mod)%mod << '\n';
}
fin.close();
fout.close();
return 0;
}
long long *putere(long long *a, int p)
{
if( p == 1 )
return a;
long long *aux;
if( p % 2 == 0 )
{
aux = putere( inmultire(a, a), p / 2 );
return aux;
}
else
{
aux = inmultire( a, putere( inmultire(a, a), p/2) );
return aux;
}
}
long long *inmultire( long long *x, long long *y )
{
long long *z = new long long[9];
z[1] = ((x[1]*y[1])%mod + (x[2]*y[4])%mod + (x[3]*y[7])%mod)%mod;
z[2] = ((x[1]*y[2])%mod + (x[2]*y[5])%mod + (x[3]*y[8])%mod)%mod;
z[3] = ((x[1]*y[3])%mod + (x[2]*y[6])%mod + (x[3]*y[9])%mod)%mod;
z[4] = ((x[4]*y[1])%mod + (x[5]*y[4])%mod + (x[6]*y[7])%mod)%mod;
z[5] = ((x[4]*y[2])%mod + (x[5]*y[5])%mod + (x[6]*y[8])%mod)%mod;
z[6] = ((x[4]*y[3])%mod + (x[5]*y[6])%mod + (x[6]*y[9])%mod)%mod;
z[7] = ((x[7]*y[1])%mod + (x[8]*y[4])%mod + (x[9]*y[7])%mod)%mod;
z[8] = ((x[7]*y[2])%mod + (x[8]*y[5])%mod + (x[9]*y[8])%mod)%mod;
z[9] = ((x[7]*y[3])%mod + (x[8]*y[6])%mod + (x[9]*y[9])%mod)%mod;
return z;
}